| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- ---
- - 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: ps aux | grep '[k]3s' | awk '{print $2}' || true
- register: k3s_pids
- changed_when: false
- - name: Kill running k3s processes if any exist
- shell: "kill {{ item }}"
- loop: "{{ k3s_pids.stdout_lines }}"
- when: k3s_pids.stdout != ""
- ignore_errors: yes
- - 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 }}"
|