--- - name: Install k3s on master node hosts: master become: yes vars: k3s_version: "v1.35.0+k3s1" k3s_download_url: "http://download.9981.tech/k3s-v1.35.0%2Bk3s1" master_ip: "47.113.186.215" k3s_token: "my-secret-token" tasks: - name: Check if k3s service exists stat: path: /etc/systemd/system/k3s.service register: k3s_service_exists - name: Stop k3s service if it exists systemd: name: k3s state: stopped when: k3s_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 service file file: path: /etc/systemd/system/k3s.service state: absent - name: Remove k3s data directories file: path: "{{ item }}" state: absent loop: - /var/lib/rancher/k3s - /etc/rancher/k3s - /root/.kube - name: Print cleanup status debug: msg: "Cleanup completed on master node" - 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, skipping download" when: k3s_binary.stat.exists - name: Create k3s systemd service file template: src: k3s.service.j2 dest: /etc/systemd/system/k3s.service mode: '0644' - name: Reload systemd daemon systemd: daemon_reload: yes - name: Enable and start k3s service systemd: name: k3s enabled: yes state: started - name: Wait for node-token file to be created wait_for: path: /var/lib/rancher/k3s/server/node-token timeout: 120 register: token_wait - name: Check k3s service status shell: systemctl is-active k3s register: service_status ignore_errors: yes - name: Display k3s service status debug: msg: "k3s service status on master: {{ service_status.stdout }}" - name: Get k3s logs if service is not active shell: journalctl -u k3s --no-pager -n 20 when: service_status.stdout != 'active' register: service_logs ignore_errors: yes - name: Display k3s logs if needed debug: msg: "{{ service_logs.stdout_lines }}" when: service_status.stdout != 'active' - name: Display success message debug: msg: "k3s master node installed and running successfully"