install-k3s-workers.yml 4.3 KB

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