install-k3s-workers.yml 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  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: Kill any running k3s processes
  43. shell: pkill -f k3s || true
  44. when: k3s_agent_service_exists.stat.exists
  45. ignore_errors: yes
  46. - name: Remove k3s-agent service file
  47. file:
  48. path: /etc/systemd/system/k3s-agent.service
  49. state: absent
  50. - name: Remove k3s data directory
  51. file:
  52. path: /var/lib/rancher/k3s
  53. state: absent
  54. - name: Reload systemd daemon
  55. systemd:
  56. daemon_reload: yes
  57. - name: Print cleanup status
  58. debug:
  59. msg: "Cleanup completed on worker node {{ inventory_hostname }}"
  60. - name: Test connectivity to master node
  61. wait_for:
  62. port: 6443
  63. host: "{{ master_ip }}"
  64. timeout: 10
  65. state: started
  66. ignore_errors: yes
  67. - name: Check if k3s binary exists
  68. stat:
  69. path: /usr/local/bin/k3s
  70. register: k3s_binary
  71. - name: Download k3s binary
  72. get_url:
  73. url: "{{ k3s_download_url }}"
  74. dest: /usr/local/bin/k3s
  75. mode: '0755'
  76. when: not k3s_binary.stat.exists
  77. - name: Print k3s binary status
  78. debug:
  79. msg: "k3s binary already exists on worker {{ inventory_hostname }}, skipping download"
  80. when: k3s_binary.stat.exists
  81. - name: Create k3s-agent systemd service file
  82. template:
  83. src: k3s-agent.service.j2
  84. dest: /etc/systemd/system/k3s-agent.service
  85. mode: '0644'
  86. - name: Reload systemd daemon
  87. systemd:
  88. daemon_reload: yes
  89. - name: Enable and start k3s-agent service
  90. systemd:
  91. name: k3s-agent
  92. enabled: yes
  93. state: started
  94. - name: Wait for k3s-agent to start
  95. wait_for:
  96. port: 10250
  97. host: "{{ inventory_hostname }}"
  98. timeout: 120
  99. delay: 10
  100. ignore_errors: yes
  101. - name: Check k3s-agent service status
  102. shell: systemctl is-active k3s-agent
  103. register: service_status
  104. ignore_errors: yes
  105. - name: Display k3s-agent service status
  106. debug:
  107. msg: "k3s-agent service status on {{ inventory_hostname }}: {{ service_status.stdout }}"
  108. - name: Get k3s-agent logs if service is not active
  109. shell: journalctl -u k3s-agent --no-pager -n 20
  110. when: service_status.stdout != 'active'
  111. register: service_logs
  112. ignore_errors: yes
  113. - name: Display k3s-agent logs if needed
  114. debug:
  115. msg: "{{ service_logs.stdout_lines }}"
  116. when: service_status.stdout != 'active'
  117. - name: Check if k3s-agent process is running
  118. shell: pgrep k3s
  119. register: k3s_process
  120. ignore_errors: yes
  121. - name: Display k3s process info
  122. debug:
  123. msg: "k3s process IDs on {{ inventory_hostname }}: {{ k3s_process.stdout }}"
  124. when: k3s_process.stdout is defined and k3s_process.stdout != ""
  125. - name: Display success message
  126. debug:
  127. msg: "k3s agent installed and joined to cluster on worker {{ inventory_hostname }}"