main.yml 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. ---
  2. # - name: checking ports
  3. # include_role:
  4. # name: utils/misc-check
  5. - name: output onecloud_version
  6. debug:
  7. var: onecloud_version
  8. - name: output upgrade_onecloud_version
  9. debug:
  10. var: upgrade_onecloud_version
  11. - name: Verify OS is not debian based when lbagent is enabled
  12. fail:
  13. msg: "Cannot deploy lbagent on Debian based OS (AppArmor enabled OS)"
  14. when:
  15. - enable_lbagent | default(false) | bool == true
  16. - ansible_os_family == 'Debian'
  17. # 这里设置 primary_master_node_ip ,如果 primary_master_node_ip 不存在,则使用 hostvars[groups['primary_master_node'][0]]['node_ip']
  18. - name: set primary_master_node_ip if not defined
  19. set_fact:
  20. primary_master_node_ip: "{{ hostvars[groups['primary_master_node'][0]]['node_ip'] }}"
  21. when:
  22. - online_status is defined
  23. - online_status == 'offline'
  24. - primary_master_node_ip is not defined
  25. - groups['primary_master_node'] is defined
  26. - groups['primary_master_node'] | length > 0
  27. - name: set private registry dns record {{ primary_master_node_ip }} to /etc/hosts
  28. lineinfile:
  29. path: /etc/hosts
  30. line: "{{ primary_master_node_ip }} private-registry.onecloud"
  31. state: present
  32. when:
  33. - online_status is defined
  34. - online_status == 'offline'
  35. - primary_master_node_ip is defined
  36. - name: Append win11_packages to common_packages if win11_packages is defined
  37. set_fact:
  38. common_packages: "{{ common_packages + win11_packages }}"
  39. when:
  40. - win11_packages is defined
  41. - common_packages is defined
  42. - (onecloud_version is version('v4.0', '>=') and upgrade_onecloud_version is not defined) or (upgrade_onecloud_version is defined and upgrade_onecloud_version is version('v4.0', '>='))
  43. - name: Append qemu_10_packages to common_packages after version 4.0
  44. set_fact:
  45. common_packages: "{{ common_packages + qemu_10_packages }}"
  46. when:
  47. - qemu_10_packages is defined
  48. - common_packages is defined
  49. - (onecloud_version is version('v4.0', '>=') and upgrade_onecloud_version is not defined) or (upgrade_onecloud_version is defined and upgrade_onecloud_version is version('v4.0', '>='))
  50. # onecloud/roles/common/tasks/
  51. - name: "Import OS Arch tasks Common ({{ ansible_distribution }} {{ ansible_distribution_major_version }} {{ ansible_architecture }})"
  52. include_tasks: "{{ item }}"
  53. with_first_found:
  54. - files:
  55. - "{{ ansible_distribution | lower | regex_replace('[^a-zA-Z0-9 ]+|[ ]+$', '') | replace(' ','_') }}-{{ansible_distribution_release}}.yml"
  56. - "{{ ansible_distribution | lower |replace(' ', '_')}}_{{ ansible_distribution_major_version |lower }}_{{ ansible_architecture }}.yml"
  57. - "{{ ansible_distribution | lower |replace(' ', '_')}}_{{ ansible_distribution_major_version |lower }}.yml"
  58. - "{{ ansible_distribution | lower |replace(' ', '_')}}.yml"
  59. paths:
  60. - os
  61. - name: Binary version check
  62. include_role:
  63. name: utils/bin-version-check
  64. when:
  65. - K3S_CMDLINE_PREFIX | default('') | length == 0
  66. - name: reset iptables rules
  67. shell: |
  68. # backup iptable ruleset
  69. fn=/etc/iptables.backup.$(date +"%Y%m%d-%H%M%S")
  70. sudo iptables-save > "$fn"
  71. # reset iptable rules
  72. sudo iptables -t nat -F
  73. sudo iptables -t nat -X
  74. sudo iptables -t nat -P PREROUTING ACCEPT
  75. sudo iptables -t nat -P POSTROUTING ACCEPT
  76. sudo iptables -t nat -P OUTPUT ACCEPT
  77. sudo iptables -t mangle -F
  78. sudo iptables -t mangle -X
  79. sudo iptables -t mangle -P PREROUTING ACCEPT
  80. sudo iptables -t mangle -P INPUT ACCEPT
  81. sudo iptables -t mangle -P FORWARD ACCEPT
  82. sudo iptables -t mangle -P OUTPUT ACCEPT
  83. sudo iptables -t mangle -P POSTROUTING ACCEPT
  84. sudo iptables -F
  85. sudo iptables -X
  86. sudo iptables -P FORWARD ACCEPT
  87. sudo iptables -P INPUT ACCEPT
  88. sudo iptables -P OUTPUT ACCEPT
  89. sudo iptables -t raw -F
  90. sudo iptables -t raw -X
  91. sudo iptables -t raw -P PREROUTING ACCEPT
  92. sudo iptables -t raw -P OUTPUT ACCEPT
  93. sudo service iptables save || :
  94. sudo service iptables restart || :
  95. args:
  96. executable: /bin/bash
  97. - name: Stop/Disable Depreciated Services If Any
  98. shell: |
  99. for service in yunion-host-image yunion-host-sdnagent firewalld
  100. do
  101. if [ -f /usr/lib/systemd/system/$service.service ]; then
  102. sudo systemctl disable --now $service
  103. fi
  104. done
  105. become: true
  106. args:
  107. executable: /bin/bash
  108. ignore_errors: yes
  109. changed_when: false
  110. failed_when: false
  111. - name: Config NetworkManager
  112. include_role:
  113. name: utils/config-network-manager
  114. - name: Load br_netfilter
  115. modprobe:
  116. name: "{{ item }}"
  117. state: present
  118. become: true
  119. loop:
  120. - br_netfilter
  121. - ip_conntrack
  122. - name: Load br_netfilter at boot
  123. copy:
  124. owner: root
  125. group: root
  126. mode: "0644"
  127. dest: /etc/modules-load.d/kubernetes.conf
  128. content:
  129. br_netfilter
  130. become: true
  131. - name: Change sysctl setting
  132. sysctl:
  133. name: "{{ item }}"
  134. value: "1"
  135. state: present
  136. become: true
  137. loop:
  138. - net.bridge.bridge-nf-call-iptables
  139. - net.bridge.bridge-nf-call-ip6tables
  140. - net.ipv4.ip_forward
  141. - name: Change sysctl fs.inotify.max_user_watches
  142. sysctl:
  143. name: "fs.inotify.max_user_watches"
  144. value: "65536"
  145. state: present
  146. become: true
  147. - name: Change sysctl fs.inotify.max_user_instances
  148. sysctl:
  149. name: "fs.inotify.max_user_instances"
  150. value: "8192"
  151. state: present
  152. become: true
  153. - name: Disable systemd swap service
  154. shell: |
  155. dev=$(cat /proc/swaps |grep -v 'Filename' |wc -l)
  156. if [ "$dev" -eq 0 ]; then
  157. exit 0
  158. fi
  159. for i in $(systemctl --type swap --all|grep 'dev'|grep active |awk '{print $1}' ); do
  160. if [ -z "$i" ]; then
  161. continue
  162. fi
  163. systemctl stop "$i"
  164. systemctl mask "$i"
  165. done
  166. systemctl daemon-reload
  167. cp -fv /etc/fstab /etc/fstab.$(date +"%Y%m%d-%H%M%S").bak
  168. sed -i '/swap/ s/^#*/#/' -i /etc/fstab
  169. become: true
  170. args:
  171. executable: /bin/bash
  172. when:
  173. - is_debian_based is defined
  174. # https://github.com/kubernetes-retired/contrib/blob/master/ansible/roles/node/tasks/swapoff.yml
  175. - name: Turn off swap mount
  176. mount:
  177. name: "{{ item }}"
  178. fstype: swap
  179. state: absent
  180. become: true
  181. with_items:
  182. - swap
  183. - none
  184. - name: Turn off swap now
  185. command: swapoff -a
  186. become: true
  187. when: ansible_swaptotal_mb > 0
  188. - name: Create sysconfig directory if does not exist
  189. file:
  190. path: /etc/sysconfig/modules/
  191. state: directory
  192. mode: '0755'
  193. become: true
  194. - name: kernel module config
  195. include_role:
  196. name: utils/kernel-modules
  197. # added to "k8s_docker.yml"
  198. - name: include k8s docker if needed
  199. include_tasks: "k8s_docker.yml"
  200. when:
  201. - k8s_or_k3s | default('') == 'k8s'
  202. - name: Export cloud bin path in /etc/profile
  203. lineinfile:
  204. dest: /etc/profile
  205. line: "export PATH=$PATH:/opt/yunion/bin"
  206. state: present
  207. create: yes
  208. regexp: '^export PATH=.*/opt/yunion/bin'
  209. become: true
  210. when: shell is undefined or shell == 'bash'
  211. - name: Enable cloud systemd services
  212. service:
  213. name: "{{ item }}"
  214. enabled: yes
  215. state: started
  216. become: true
  217. loop:
  218. - yunion-executor
  219. - name: Include cronjobs
  220. include_role:
  221. name: utils/cronjobs
  222. - name: Install ceph and openvswitch scripts
  223. include_tasks: "symlink.yml"
  224. when:
  225. - (onecloud_version is version('v4.0', '>=') and upgrade_onecloud_version is not defined) or (upgrade_onecloud_version is defined and upgrade_onecloud_version is version('v4.0', '>='))