--- - name: Check if k3s agent is already installed stat: path: /usr/local/bin/k3s-agent register: k3s_agent_binary - name: Download k3s install script get_url: url: https://get.k3s.io dest: /tmp/install-k3s.sh mode: "0755" when: not k3s_agent_binary.stat.exists - name: Install k3s agent when: not k3s_agent_binary.stat.exists block: - name: Run k3s agent install environment: INSTALL_K3S_VERSION: "{{ k3s_version if k3s_version != 'latest' else '' }}" K3S_URL: "{{ k3s_server_url }}" K3S_TOKEN: "{{ k3s_token }}" command: >- /tmp/install-k3s.sh agent --node-ip {{ k3s_node_ip }} {% if k3s_kubelet_cloud_provider_external | bool %}--kubelet-arg=cloud-provider=external{% endif %} args: creates: /usr/local/bin/k3s-agent rescue: - name: Show k3s-agent service status after failed install command: systemctl status k3s-agent --no-pager register: k3s_agent_status_after_install changed_when: false failed_when: false - name: Show recent k3s-agent logs after failed install command: journalctl -u k3s-agent -n 120 --no-pager register: k3s_agent_journal_after_install changed_when: false failed_when: false - name: Fail with k3s-agent diagnostics fail: msg: | k3s agent install failed on {{ inventory_hostname }}. Service status: {{ k3s_agent_status_after_install.stdout | default('n/a') }} Recent logs: {{ k3s_agent_journal_after_install.stdout | default('n/a') }} - name: Wait for k3s agent to be ready command: systemctl is-active k3s-agent register: agent_status until: agent_status.stdout == "active" retries: 30 delay: 10 changed_when: false