- name: Remove known_hosts file if it exists delegate_to: localhost run_once: true ansible.builtin.file: path: /home/taqi/.ssh/known_hosts state: absent - name: Remove k0ctl lock file if it exists ansible.builtin.file: path: /run/lock/k0sctl state: absent become: true - name: Install k0sctl on host delegate_to: localhost ansible.builtin.command: cmd: "go install github.com/k0sproject/k0sctl@latest" - name: Ensure k0sctl is installed on host delegate_to: localhost run_once: true ansible.builtin.command: cmd: "k0sctl version" register: k0sctl_version changed_when: false - name: Generate k0sctl configuration file delegate_to: localhost run_once: true ansible.builtin.template: src: k0sctl.yaml.j2 dest: /tmp/k0sctl.yaml when: k0sctl_version is defined tags: - generate-k0sctl-config - name: Generate MetalLB IP Address Pool configuration file delegate_to: localhost run_once: true ansible.builtin.template: src: ipAddressPool.yaml.j2 dest: /tmp/ipAddressPool.yaml when: k0sctl_version is defined tags: - generatemetallb-ippool - metallb-ippool - name: Create Cluster using k0sctl from host delegate_to: localhost run_once: true ansible.builtin.command: cmd: "k0sctl apply --config /tmp/k0sctl.yaml" when: k0sctl_version is defined - name: Save kubeconfig file on host delegate_to: localhost run_once: true ansible.builtin.shell: cmd: "cd /tmp && k0sctl kubeconfig > /home/taqi/.kube/k0s_config.yaml" register: kubeconfig_result retries: 3 delay: 5 until: kubeconfig_result.rc == 0 when: k0sctl_version is defined tags: - generate-kubeconfig - name: Apply IP Pool for MetalLB from host delegate_to: localhost run_once: true ansible.builtin.shell: cmd: "kubectl apply -f /tmp/ipAddressPool.yaml --kubeconfig /home/taqi/.kube/k0s_config.yaml" register: metallb_ippool_result retries: 3 delay: 5 until: metallb_ippool_result.rc == 0 when: k0sctl_version is defined tags: - metallb-ippool - name: Cleanup temporary files delegate_to: localhost run_once: true block: - name: Remove k0sctl.yaml temporary file ansible.builtin.file: path: /tmp/k0sctl.yaml state: absent - name: Remove ipAddressPool.yaml temporary file ansible.builtin.shell: cmd: "rm -f /tmp/ipAddressPool.yaml" delegate_to: localhost run_once: true tags: - cleanup when: k0sctl_version is defined