--- - name: Install k3s agents and join them to master hosts: master become: yes vars: master_ip: "47.113.186.215" k3s_download_url: "http://download.9981.tech/k3s-v1.35.0%2Bk3s1" tasks: - name: Fetch the node token from master slurp: src: /var/lib/rancher/k3s/server/node-token register: node_token_result - name: Set node token fact set_fact: node_token: "{{ node_token_result.content | b64decode | trim }}" - name: Copy node token to worker nodes copy: content: "{{ node_token }}" dest: /root/node-token delegate_to: "{{ item }}" loop: - "101.201.78.54" - "47.120.61.39" delegate_facts: yes - name: Install k3s on worker nodes and join to cluster hosts: workers become: yes vars: master_ip: "47.113.186.215" k3s_download_url: "http://download.9981.tech/k3s-v1.35.0%2Bk3s1" tasks: - name: Check if k3s-agent service exists stat: path: /etc/systemd/system/k3s-agent.service register: k3s_agent_service_exists - name: Stop k3s-agent service if it exists systemd: name: k3s-agent state: stopped when: k3s_agent_service_exists.stat.exists ignore_errors: yes - name: Check for running k3s processes shell: pgrep -f k3s register: k3s_processes failed_when: false changed_when: false - name: Kill running k3s processes if any exist shell: pkill -f k3s when: k3s_processes.rc == 0 # Only run if processes were found - name: Remove k3s-agent service file file: path: /etc/systemd/system/k3s-agent.service state: absent - name: Remove k3s data directory file: path: /var/lib/rancher/k3s state: absent - name: Reload systemd daemon systemd: daemon_reload: yes - name: Print cleanup status debug: msg: "Cleanup completed on worker node {{ inventory_hostname }}" - name: Test connectivity to master node wait_for: port: 6443 host: "{{ master_ip }}" timeout: 10 state: started ignore_errors: yes - name: Check if k3s binary exists stat: path: /usr/local/bin/k3s register: k3s_binary - name: Download k3s binary get_url: url: "{{ k3s_download_url }}" dest: /usr/local/bin/k3s mode: '0755' when: not k3s_binary.stat.exists - name: Print k3s binary status debug: msg: "k3s binary already exists on worker {{ inventory_hostname }}, skipping download" when: k3s_binary.stat.exists - name: Create k3s-agent systemd service file template: src: k3s-agent.service.j2 dest: /etc/systemd/system/k3s-agent.service mode: '0644' - name: Reload systemd daemon systemd: daemon_reload: yes - name: Enable and start k3s-agent service systemd: name: k3s-agent enabled: yes state: started - name: Wait for k3s-agent to start wait_for: port: 10250 host: "{{ inventory_hostname }}" timeout: 120 delay: 10 ignore_errors: yes - name: Check k3s-agent service status shell: systemctl is-active k3s-agent register: service_status ignore_errors: yes - name: Display k3s-agent service status debug: msg: "k3s-agent service status on {{ inventory_hostname }}: {{ service_status.stdout }}" - name: Get k3s-agent logs if service is not active shell: journalctl -u k3s-agent --no-pager -n 20 when: service_status.stdout != 'active' register: service_logs ignore_errors: yes - name: Display k3s-agent logs if needed debug: msg: "{{ service_logs.stdout_lines }}" when: service_status.stdout != 'active' - name: Check if k3s-agent process is running shell: pgrep k3s register: k3s_process ignore_errors: yes - name: Display k3s process info debug: msg: "k3s process IDs on {{ inventory_hostname }}: {{ k3s_process.stdout }}" when: k3s_process.stdout is defined and k3s_process.stdout != "" - name: Display success message debug: msg: "k3s agent installed and joined to cluster on worker {{ inventory_hostname }}"