How to use Ansible Kubernetes packages with the Helm package manager modules

Hi All,

I am trying to do helm install using Ansible Kubernetes packages with the Helm package manager modules.

If I use the below command in Ansible shell, the helm deployment is a success.

  • name: install_nr_kubernetes_integration
    shell: /usr/local/bin/helm upgrade --install newrelic newrelic/nri-bundle --set global.licenseKey={{ new_relic_key }} --set global.cluster={{ gcp_cluster }} --set infrastructure.enabled=true --set prometheus.enabled=true --set webhook.enabled=true --set ksm.enabled=true --set kubeEvents.enabled=true --set logging.enabled=true

If I try to use the Ansible Kubernetes packages with the Helm package manager modules, the helm deployment is not deployed as expected.

Hi Team,

Could you help me with the above-said issue please?

Thanks,
Siva

Hi Siva,

Let me try to reproduce this and get back to you.

Hi Siva,

I am not able to reproduce any error, here is my output -

changed: [localhost] => {
“changed”: true,
“command”: “/usr/local/bin/helm upgrade -i --reset-values -f=/tmp/tmp9iz7ys8s.yml newrelic newrelic/nri-bundle”,
“invocation”: {
“module_args”: {
“api_key”: null,
“atomic”: false,
“binary_path”: “/usr/local/bin/helm”,
“ca_cert”: null,
“chart_ref”: “newrelic/nri-bundle”,
“chart_repo_url”: null,
“chart_version”: null,
“context”: null,
“create_namespace”: false,
“disable_hook”: false,
“force”: false,
“host”: null,
“kubeconfig”: null,
“name”: “newrelic”,
“purge”: true,
“release_name”: “newrelic”,
“release_namespace”: “default”,
“release_state”: “present”,
“release_values”: {
“global.cluster”: “a”,
“global.licenseKey”: “a”,
“infrastructure.enabled”: true,
“prometheus.enabled”: true
},
“replace”: false,
“skip_crds”: false,
“update_repo_cache”: false,
“validate_certs”: true,
“values”: {
“global.cluster”: “a”,
“global.licenseKey”: “a”,
“infrastructure.enabled”: true,
“prometheus.enabled”: true
},
“values_files”: ,
“wait”: false,
“wait_timeout”: null
}
},
“status”: {
“app_version”: “1.0”,
“chart”: “nri-bundle-2.6.0”,
“name”: “newrelic”,
“namespace”: “default”,
“revision”: “1”,
“status”: “deployed”,
“updated”: “2021-03-31 17:20:56.228572 +0530 IST”,
“values”: {
“global.cluster”: “a”,
“global.licenseKey”: “a”,
“infrastructure.enabled”: true,
“prometheus.enabled”: true
}
},
“stderr”: “”,
“stderr_lines”: ,
“stdout”: “Release "newrelic" does not exist. Installing it now.\nNAME: newrelic\nLAST DEPLOYED: Wed Mar 31 17:20:56 2021\nNAMESPACE: default\nSTATUS: deployed\nREVISION: 1\nTEST SUITE: None\n”,
“stdout_lines”: [
“Release "newrelic" does not exist. Installing it now.”,
“NAME: newrelic”,
“LAST DEPLOYED: Wed Mar 31 17:20:56 2021”,
“NAMESPACE: default”,
“STATUS: deployed”,
“REVISION: 1”,
“TEST SUITE: None”
]
}

Can you please paste your error message or console log?

Hi Abhijeet,

Thanks for your help.

Please find the log below. Btrw, there is no error message upon running the playbook. But its not deployed the helm chart.

<34.69.209.68> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ‘User=“ansadmin”’ -o ConnectTimeout=10 -o ControlPath=/home/ansadmin/.ansible/cp/e12395894d 34.69.209.68 ‘/bin/sh -c ‘"’“‘rm -f -r /home/ansadmin/.ansible/tmp/ansible-tmp-1617268607.9522765-6383-1146126971822/ > /dev/null 2>&1 && sleep 0’”’"‘’
<34.69.209.68> (0, b’‘, b’')
changed: [34.69.209.68] => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: true,
“command”: “/usr/local/bin/helm upgrade -i --reset-values -f=/tmp/tmprp_GBW.yml newrelic newrelic/nri-bundle”,
“invocation”: {
“module_args”: {
“api_key”: null,
“atomic”: false,
“binary_path”: “/usr/local/bin/helm”,
“ca_cert”: null,
“chart_ref”: “newrelic/nri-bundle”,
“chart_repo_url”: null,
“chart_version”: null,
“context”: null,
“create_namespace”: false,
“disable_hook”: false,
“force”: false,
“host”: null,
“kubeconfig”: null,
“name”: “newrelic”,
“purge”: true,
“release_name”: “newrelic”,
“release_namespace”: “default”,
“release_state”: “present”,
“release_values”: {
“global.cluster”: " sample-cluster-instance-1 ",
“global.licenseKey”: “tempkey45878”,
“infrastructure.enabled”: true,
“prometheus.enabled”: true
},
“replace”: false,
“skip_crds”: false,
“update_repo_cache”: false,
“validate_certs”: true,
“values”: {
“global.cluster”: “sample-cluster-instance-1”,
“global.licenseKey”: “tempkey45878”,
“infrastructure.enabled”: true,
“prometheus.enabled”: true
},
“values_files”: ,
“wait”: false,
“wait_timeout”: null
}
},
“status”: {
“app_version”: “1.0”,
“chart”: “nri-bundle-2.6.0”,
“name”: “newrelic”,
“namespace”: “default”,
“revision”: “1”,
“status”: “deployed”,
“updated”: “2021-04-01 09:16:49.648228551 +0000 UTC”,
“values”: {
“global.cluster”: “sample-cluster-instance-1”,
“global.licenseKey”: “tempkey45878”,
“infrastructure.enabled”: true,
“prometheus.enabled”: true
}
},
“stderr”: “”,
“stderr_lines”: ,
“stdout”: “Release "newrelic" does not exist. Installing it now.\nNAME: newrelic\nLAST DEPLOYED: Thu Apr 1 09:16:49 2021\nNAMESPACE: default\nSTATUS: deployed\nREVISION: 1\nTEST SUITE: None\n”,
“stdout_lines”: [
“Release "newrelic" does not exist. Installing it now.”,
“NAME: newrelic”,
“LAST DEPLOYED: Thu Apr 1 09:16:49 2021”,
“NAMESPACE: default”,
“STATUS: deployed”,
“REVISION: 1”,
“TEST SUITE: None”
]
}

PLAY RECAP **********************************************************************************************************************************************************************************
34.69.209.68 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

Thanks,
Siva

Hi Abhijeet, Team,

Could you help me with my request?

Thanks in advance.

Thanks,
Siva

Can you please paste kubectl -n default get pods?

Please find the output.

]# kubectl -n default get pods
NAME READY STATUS RESTARTS AGE
newrelic-nri-metadata-injection-job-4gsxp 0/1 Completed 0 5h30m

In actual helm deployment, it should show below PODS and daemon sets. All are missing when deploy using ansible helm modules.

kubectl -n default get pods

NAME READY STATUS RESTARTS AGE
newrelic-kube-state-metrics-774bcf5cf5-zhtjb 0/1 Running 0 7s
newrelic-newrelic-infrastructure-246kt 1/1 Running 0 7s
newrelic-newrelic-infrastructure-cjrbs 1/1 Running 0 7s
newrelic-newrelic-infrastructure-klkv6 1/1 Running 0 7s
newrelic-newrelic-infrastructure-p8r5t 1/1 Running 0 7s
newrelic-newrelic-infrastructure-tlgm4 1/1 Running 0 7s
newrelic-newrelic-infrastructure-zbd2d 1/1 Running 0 7s
newrelic-newrelic-logging-cm8gv 1/1 Running 0 7s
newrelic-newrelic-logging-dpcjw 1/1 Running 0 7s
newrelic-newrelic-logging-lgf6b 1/1 Running 0 7s
newrelic-newrelic-logging-pxgnq 1/1 Running 0 7s
newrelic-newrelic-logging-wh9qc 1/1 Running 0 7s
newrelic-newrelic-logging-ztmrs 1/1 Running 0 7s
newrelic-nri-kube-events-86d68fd965-9xbrf 2/2 Running 0 7s
newrelic-nri-metadata-injection-d7d676576-6d2vj 0/1 ContainerCreating 0 7s
newrelic-nri-metadata-injection-job-pr6lx 1/1 Running 0 7s
newrelic-nri-prometheus-586654b7ff-d229g 1/1 Running 0 7s

kubectl get pods --all-namespaces | grep kube-state-metrics

default newrelic-kube-state-metrics-774bcf5cf5-zhtjb 1/1 Running 0 47s

kubectl get daemonsets

NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
newrelic-newrelic-infrastructure 6 6 6 6 6 72s
newrelic-newrelic-logging 6 6 6 6 6 72s

Hi Siva,

Can you please try with values like -

  • name: integrate-new-relic-and-prometheus-with-cluster
    community.kubernetes.helm:
    binary_path: “/usr/local/bin/helm”
    release_namespace: default
    name: newrelic
    chart_ref: newrelic/nri-bundle
    values:
    global:
    cluster: “a”
    licenseKey: “a”
    infrastructure:
    enabled: true
    prometheus:
    enabled: true

Hi Abhijeet,

It is showing the same output still.

Not sure where is the issue ?

Thanks,
Siva