install-k3s-workers.yml 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. ---
  2. - name: Install k3s agents and join them to master
  3. hosts: master
  4. become: yes
  5. vars:
  6. master_ip: "47.113.186.215"
  7. k3s_download_url: "http://download.9981.tech/k3s-v1.35.0%2Bk3s1"
  8. tasks:
  9. - name: Fetch the node token from master
  10. slurp:
  11. src: /var/lib/rancher/k3s/server/node-token
  12. register: node_token_result
  13. - name: Set node token fact
  14. set_fact:
  15. node_token: "{{ node_token_result.content | b64decode | trim }}"
  16. - name: Copy node token to worker nodes
  17. copy:
  18. content: "{{ node_token }}"
  19. dest: /root/node-token
  20. delegate_to: "{{ item }}"
  21. loop:
  22. - "101.201.78.54"
  23. - "47.120.61.39"
  24. delegate_facts: yes
  25. - name: Install k3s on worker nodes and join to cluster
  26. hosts: workers
  27. become: yes
  28. vars:
  29. master_ip: "47.113.186.215"
  30. k3s_download_url: "http://download.9981.tech/k3s-v1.35.0%2Bk3s1"
  31. tasks:
  32. - name: Check if k3s-agent service exists
  33. stat:
  34. path: /etc/systemd/system/k3s-agent.service
  35. register: k3s_agent_service_exists
  36. - name: Stop k3s-agent service if it exists
  37. systemd:
  38. name: k3s-agent
  39. state: stopped
  40. when: k3s_agent_service_exists.stat.exists
  41. ignore_errors: yes
  42. - name: Check for running k3s processes
  43. shell: ps aux | grep '[k]3s' | awk '{print $2}' || true
  44. register: k3s_pids
  45. changed_when: false
  46. - name: Kill running k3s processes if any exist
  47. shell: "kill {{ item }}"
  48. loop: "{{ k3s_pids.stdout_lines }}"
  49. when: k3s_pids.stdout != ""
  50. ignore_errors: yes
  51. - name: Remove k3s-agent service file
  52. file:
  53. path: /etc/systemd/system/k3s-agent.service
  54. state: absent
  55. - name: Remove k3s data directory
  56. file:
  57. path: /var/lib/rancher/k3s
  58. state: absent
  59. - name: Reload systemd daemon
  60. systemd:
  61. daemon_reload: yes
  62. - name: Print cleanup status
  63. debug:
  64. msg: "Cleanup completed on worker node {{ inventory_hostname }}"
  65. - name: Test connectivity to master node
  66. wait_for:
  67. port: 6443
  68. host: "{{ master_ip }}"
  69. timeout: 10
  70. state: started
  71. ignore_errors: yes
  72. - name: Check if k3s binary exists
  73. stat:
  74. path: /usr/local/bin/k3s
  75. register: k3s_binary
  76. - name: Download k3s binary
  77. get_url:
  78. url: "{{ k3s_download_url }}"
  79. dest: /usr/local/bin/k3s
  80. mode: '0755'
  81. when: not k3s_binary.stat.exists
  82. - name: Print k3s binary status
  83. debug:
  84. msg: "k3s binary already exists on worker {{ inventory_hostname }}, skipping download"
  85. when: k3s_binary.stat.exists
  86. - name: Create k3s-agent systemd service file
  87. template:
  88. src: k3s-agent.service.j2
  89. dest: /etc/systemd/system/k3s-agent.service
  90. mode: '0644'
  91. - name: Reload systemd daemon
  92. systemd:
  93. daemon_reload: yes
  94. - name: Enable and start k3s-agent service
  95. systemd:
  96. name: k3s-agent
  97. enabled: yes
  98. state: started
  99. - name: Wait for k3s-agent to start
  100. wait_for:
  101. port: 10250
  102. host: "{{ inventory_hostname }}"
  103. timeout: 120
  104. delay: 10
  105. ignore_errors: yes
  106. - name: Check k3s-agent service status
  107. shell: systemctl is-active k3s-agent
  108. register: service_status
  109. ignore_errors: yes
  110. - name: Display k3s-agent service status
  111. debug:
  112. msg: "k3s-agent service status on {{ inventory_hostname }}: {{ service_status.stdout }}"
  113. - name: Get k3s-agent logs if service is not active
  114. shell: journalctl -u k3s-agent --no-pager -n 20
  115. when: service_status.stdout != 'active'
  116. register: service_logs
  117. ignore_errors: yes
  118. - name: Display k3s-agent logs if needed
  119. debug:
  120. msg: "{{ service_logs.stdout_lines }}"
  121. when: service_status.stdout != 'active'
  122. - name: Check if k3s-agent process is running
  123. shell: pgrep k3s
  124. register: k3s_process
  125. ignore_errors: yes
  126. - name: Display k3s process info
  127. debug:
  128. msg: "k3s process IDs on {{ inventory_hostname }}: {{ k3s_process.stdout }}"
  129. when: k3s_process.stdout is defined and k3s_process.stdout != ""
  130. - name: Display success message
  131. debug:
  132. msg: "k3s agent installed and joined to cluster on worker {{ inventory_hostname }}"