- name: Install kubernetes on Rocky 9 become: "{{ 'no' if inventory_hostname == 'nas.home.lan' else 'yes' }}" vars: helm_version: "v3.15.4" helm_tar: "helm-{{ helm_version }}-linux-amd64.tar.gz" helm_url: "https://get.helm.sh/{{ helm_tar }}" helm_bin: /usr/local/bin/helm kubeconfig: /home/jd/.kube/config nfs_server: "192.168.77.106" nfs_path: "/qda_1" helm_env: PATH: /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin HOME: /home/jd XDG_CONFIG_HOME: /home/jd/.config KUBECONFIG: "{{ kubeconfig }}" block: # ---------------------------- # 1. Install Helm v3 # ---------------------------- - name: Download Helm get_url: url: "{{ helm_url }}" dest: "/tmp/{{ helm_tar }}" mode: '0644' when: inventory_hostname.endswith('-vm01.home.lan') - name: Create Helm config directory file: path: /home/jd/.config/helm state: directory mode: '0755' when: inventory_hostname.endswith('-vm01.home.lan') - name: Extract Helm archive unarchive: src: "/tmp/{{ helm_tar }}" dest: /tmp remote_src: true when: inventory_hostname.endswith('-vm01.home.lan') - name: Install Helm binary copy: src: /tmp/linux-amd64/helm dest: "{{ helm_bin }}" mode: '0755' remote_src: true when: inventory_hostname.endswith('-vm01.home.lan') - name: Verify Helm installation command: helm version environment: "{{ helm_env }}" when: inventory_hostname.endswith('-vm01.home.lan') # ---------------------------- # 2. Prepare Helm config dir # ---------------------------- - name: Create Helm config directory file: path: /tmp/helm/.config/helm state: directory mode: '0755' when: inventory_hostname.endswith('-vm01.home.lan') # ---------------------------- # 3. Add NFS Helm repo # ---------------------------- - name: Add NFS Subdir External Provisioner repo kubernetes.core.helm_repository: name: nfs-subdir-external-provisioner repo_url: https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/ environment: "{{ helm_env }}" when: inventory_hostname.endswith('-vm01.home.lan') - name: Update Helm repos command: helm repo update environment: "{{ helm_env }}" when: inventory_hostname.endswith('-vm01.home.lan') # ---------------------------- # 4. Install NFS provisioner # ---------------------------- - name: Install NFS Subdir External Provisioner kubernetes.core.helm: name: nfs-storage chart_ref: nfs-subdir-external-provisioner/nfs-subdir-external-provisioner release_namespace: kube-system create_namespace: true values: nfs: server: "{{ nfs_server }}" path: "{{ nfs_path }}" storageClass: name: nfs-client defaultClass: true kubeconfig: "{{ kubeconfig }}" environment: "{{ helm_env }}" when: inventory_hostname.endswith('-vm01.home.lan') - name: Ensure correct ownership of Helm config file: path: /home/jd/.config state: directory owner: jd group: jd when: inventory_hostname.endswith('-vm01.home.lan') - name: Ensure correct ownership of Helm config file: path: /home/jd/.kube/config state: file owner: jd group: jd mode: '0600' when: inventory_hostname.endswith('-vm01.home.lan')