--- - 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 }} --flannel-iface={{ k3s_flannel_iface }} {% if k3s_kubelet_cloud_provider_external | bool %}--kubelet-arg=cloud-provider=external{% endif %} register: k3s_agent_install failed_when: false args: creates: /usr/local/bin/k3s-agent - 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 - name: Show k3s-agent service status on failure command: systemctl status k3s-agent --no-pager register: k3s_agent_status changed_when: false failed_when: false when: agent_status is failed - name: Show recent k3s-agent logs on failure command: journalctl -u k3s-agent -n 120 --no-pager register: k3s_agent_journal changed_when: false failed_when: false when: agent_status is failed - name: Fail with k3s-agent diagnostics fail: msg: | k3s agent failed to become ready on {{ inventory_hostname }}. Install stdout: {{ k3s_agent_install.stdout | default('n/a') }} Install stderr: {{ k3s_agent_install.stderr | default('n/a') }} Service status: {{ k3s_agent_status.stdout | default('n/a') }} Recent logs: {{ k3s_agent_journal.stdout | default('n/a') }} when: agent_status is failed