From 0ec30da62f696affcf0490b5ebdfa3d6277a3f42 Mon Sep 17 00:00:00 2001 From: Mike Graves Date: Wed, 13 Mar 2024 09:58:51 -0400 Subject: [PATCH] helm - expand kubeconfig path with user's home dir (#654) (#696) [backport/stable-2.4] helm - expand kubeconfig path with user's home dir (#654) helm - expand kubeconfig path with user's home dir SUMMARY Currently the helm module fails when providing the default kubeconfig path explicitly, while the same path is fine for the k8s module. ISSUE TYPE Bugfix Pull Request COMPONENT NAME helm ADDITIONAL INFORMATION name: Deploy kubelet-csr-approver delegate_to: client run_once: true kubernetes.core.helm: update_repo_cache: true kubeconfig: "~/.kube/config" state: present name: kubelet-csr-approver namespace: kubelet-csr-approver create_namespace: true chart_ref: kubelet-csr-approver/kubelet-csr-approver chart_version: 1.0.5 values: "{{ lookup('template', 'values.yaml.j2') | from_yaml }}" atomic: true Before change: TASK [kubernetes/kubelet_csr_approver : Deploy kubelet-csr-approver] *** An exception occurred during task execution. To see the full traceback, use -vvv. The error was: FileNotFoundError: [Errno 2] No such file or directory: '/.kube/config' fatal: [node-1 -> client(192.168.121.56)]: FAILED! => {"changed": false, "module_stderr": "", "module_stdout": "Traceback (most recent call last):\r\n File "/home/vagrant/.ansible/tmp/ansible-tmp-1697293347.7135417-118207-9805169252135/AnsiballZ_helm.py", line 107, in \r\n _ansiballz_main()\r\n File "/home/vagrant/.ansible/tmp/ansible-tmp-1697293347.7135417-118207-9805169252135/AnsiballZ_helm.py", line 99, in _ansiballz_main\r\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n File "/home/vagrant/.ansible/tmp/ansible-tmp-1697293347.7135417-118207-9805169252135/AnsiballZ_helm.py", line 47, in invoke_module\r\n runpy.run_module(mod_name='ansible_collections.kubernetes.core.plugins.modules.helm', init_globals=dict(_module_fqn='ansible_collections.kubernetes.core.plugins.modules.helm', _modlib_path=modlib_path),\r\n File "/usr/lib/python3.10/runpy.py", line 224, in run_module\r\n return _run_module_code(code, init_globals, run_name, mod_spec)\r\n File "/usr/lib/python3.10/runpy.py", line 96, in _run_module_code\r\n _run_code(code, mod_globals, init_globals,\r\n File "/usr/lib/python3.10/runpy.py", line 86, in _run_code\r\n exec(code, run_globals)\r\n File "/tmp/ansible_kubernetes.core.helm_payload_o8s36dti/ansible_kubernetes.core.helm_payload.zip/ansible_collections/kubernetes/core/plugins/modules/helm.py", line 924, in \r\n File "/tmp/ansible_kubernetes.core.helm_payload_o8s36dti/ansible_kubernetes.core.helm_payload.zip/ansible_collections/kubernetes/core/plugins/modules/helm.py", line 737, in main\r\n File "/tmp/ansible_kubernetes.core.helm_payload_o8s36dti/ansible_kubernetes.core.helm_payload.zip/ansible_collections/kubernetes/core/plugins/modules/helm.py", line 435, in run_repo_update\r\n File "/tmp/ansible_kubernetes.core.helm_payload_o8s36dti/ansible_kubernetes.core.helm_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/helm.py", line 169, in run_helm_command\r\n File "/tmp/ansible_kubernetes.core.helm_payload_o8s36dti/ansible_kubernetes.core.helm_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/helm.py", line 162, in env_update\r\n File "/tmp/ansible_kubernetes.core.helm_payload_o8s36dti/ansible_kubernetes.core.helm_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/helm.py", line 120, in _prepare_helm_environment\r\nFileNotFoundError: [Errno 2] No such file or directory: '/.kube/config'\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1} After change: TASK [kubernetes/kubelet_csr_approver : Deploy kubelet-csr-approver] *** changed: [node-1 -> client(192.168.121.56)] Reviewed-by: Mike Graves mgraves@redhat.com Reviewed-by: Bikouo Aubin (cherry picked from commit 9f7c865) --- changelogs/fragments/654-helm-expand-user.yml | 3 +++ plugins/module_utils/helm.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/654-helm-expand-user.yml diff --git a/changelogs/fragments/654-helm-expand-user.yml b/changelogs/fragments/654-helm-expand-user.yml new file mode 100644 index 00000000..b14a00e0 --- /dev/null +++ b/changelogs/fragments/654-helm-expand-user.yml @@ -0,0 +1,3 @@ +--- +bugfixes: + - helm - expand kubeconfig path with user's home directory for consistency with k8s diff --git a/plugins/module_utils/helm.py b/plugins/module_utils/helm.py index a7a2fa7c..18314f7a 100644 --- a/plugins/module_utils/helm.py +++ b/plugins/module_utils/helm.py @@ -117,7 +117,7 @@ class AnsibleHelmModule(object): kubeconfig = self.params.get("kubeconfig") if kubeconfig: if isinstance(kubeconfig, string_types): - with open(kubeconfig) as fd: + with open(os.path.expanduser(kubeconfig)) as fd: kubeconfig_content = yaml.safe_load(fd) elif isinstance(kubeconfig, dict): kubeconfig_content = kubeconfig