main.yml 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. ---
  2. - name: set var
  3. set_fact:
  4. k8s_controlplane_host: "{{ hostvars[inventory_hostname]['groups']['primary_master_node'][0] }}"
  5. run_once: true
  6. when:
  7. - k8s_controlplane_host | default('') | length == 0
  8. - name: Assert k8s_controlplane_host
  9. fail:
  10. msg: "k8s_controlplane_host is not defined. "
  11. when:
  12. - k8s_controlplane_host | default('') | length == 0
  13. - name: set k8s cmdline env
  14. set_fact:
  15. k8s_or_k3s: "k8s"
  16. K3S_CMDLINE_PREFIX: ''
  17. ENV_KUBECONFIG: '/etc/kubernetes/admin.conf'
  18. - name: set k3s cmdline env
  19. set_fact:
  20. k8s_or_k3s : "k3s"
  21. K3S_CMDLINE_PREFIX: '/usr/local/bin/k3s'
  22. ENV_KUBECONFIG: "{{ '~/.kube/config' | expanduser }}"
  23. when:
  24. - env_k8s_or_k3s | default('k8s') == 'k3s'
  25. - block:
  26. - name: stat k3s bin
  27. stat:
  28. path: /usr/local/bin/k3s
  29. register: k3s_bin
  30. delegate_to: "{{ k8s_controlplane_host }}"
  31. - name: stat k3s config
  32. stat:
  33. path: /root/.kube/config
  34. register: k3s_config
  35. delegate_to: "{{ k8s_controlplane_host }}"
  36. - name: set k3s var
  37. set_fact:
  38. k8s_or_k3s: "k3s"
  39. K3S_CMDLINE_PREFIX: 'k3s'
  40. ENV_KUBECONFIG: "{{ '~/.kube/config' | expanduser }}"
  41. when:
  42. - k3s_bin.stat.exists | default(false) == true
  43. - k3s_config.stat.exists | default(false) == true
  44. when:
  45. - env_k8s_or_k3s | default('') == 'k8s'
  46. - debug: var=ENV_KUBECONFIG
  47. - debug: var=K3S_CMDLINE_PREFIX
  48. - block:
  49. - name: Set Onecloud Version If Not Defined
  50. environment:
  51. KUBECONFIG: "{{ ENV_KUBECONFIG }}"
  52. shell: |
  53. {{ K3S_CMDLINE_PREFIX }} kubectl -n onecloud get onecloudclusters default -o=jsonpath='{.spec.version}'
  54. register: k8s_oc_ver
  55. delegate_to: "{{ k8s_controlplane_host }}"
  56. run_once: true
  57. become: true
  58. - name: Set K8s Version
  59. set_fact:
  60. onecloud_version: "{{ k8s_oc_ver.stdout }}"
  61. when:
  62. - k8s_oc_ver.rc == 0
  63. when:
  64. - onecloud_version is not defined
  65. - name: Assert Onecloud Version
  66. fail:
  67. msg: "onecloud_version is not defined. "
  68. when:
  69. - onecloud_version | default('') | length == 0
  70. - name: set var for master
  71. set_fact:
  72. onecloud_version_abbr: "master"
  73. when:
  74. - onecloud_version is defined
  75. - onecloud_version | regex_search('^master-[-0-9.]+')
  76. - name: set var for non master
  77. set_fact:
  78. onecloud_version_abbr: "{{ onecloud_version | regex_replace('[^0-9.]+') | regex_findall('^[0-9]+\\.[0-9]+') | join('')}}"
  79. when:
  80. - onecloud_version is defined
  81. - onecloud_version | regex_search('v[0-9][-0-9.]+')
  82. - debug: var=onecloud_version_abbr
  83. - name: gather os specific variables "{{ ansible_distribution }} {{ ansible_distribution_major_version }} {{ ansible_architecture }}"
  84. include_vars: "{{ item }}"
  85. with_first_found:
  86. - files:
  87. - "{{ ansible_distribution | regex_replace('[^a-zA-Z0-9 ]+|[ ]+$', '') |replace(' ','_') | lower}}-{{ansible_distribution_release}}.yml"
  88. - "{{ ansible_distribution | regex_replace('[^a-zA-Z0-9 ]+|[ ]+$', '') |replace(' ','_') | lower}}.yml"
  89. - "{{ ansible_distribution|lower | replace(' ', '_') }}-{{ ansible_distribution_major_version|lower|replace('/', '_') }}.{{ ansible_architecture }}.yml"
  90. - "{{ ansible_distribution|lower | replace(' ', '_') }}-{{ ansible_distribution_major_version|lower|replace('/', '_') }}.yml"
  91. - "{{ ansible_distribution|lower | replace(' ', '_') }}-{{ ansible_distribution_release|lower }}-{{ ansible_architecture }}.yml"
  92. - "{{ ansible_distribution|lower | replace(' ', '_') }}-{{ ansible_distribution_release|lower }}.yml"
  93. - "{{ ansible_distribution|lower | replace(' ', '_') }}-{{ ansible_distribution_major_version|lower|replace('/', '_') }}.yml"
  94. - "{{ ansible_distribution|lower | replace(' ', '_') }}-{{ ansible_architecture }}.yml"
  95. - "{{ ansible_distribution|lower | replace(' ', '_') }}.yml"
  96. - "{{ ansible_os_family|lower }}-{{ ansible_architecture }}.yml"
  97. - "{{ ansible_os_family|lower }}.yml"
  98. - defaults.yml
  99. paths:
  100. - ../vars
  101. tags:
  102. - facts
  103. - name: gather var for latest packages
  104. include_vars: "../vars/latest_packages.yml"
  105. when:
  106. - latest_packages is not defined
  107. - name: gather var for containerd packages
  108. include_vars: "../vars/containerd_packages.yml"
  109. when:
  110. - containerd_packages is not defined
  111. - 'enable_containerd|default(false) == true'
  112. - name: gather var for qemu 10.x packages
  113. include_vars: "../vars/qemu_10_packages.yml"
  114. when:
  115. - qemu_10_packages is not defined
  116. - (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', '>='))
  117. - name: gather var for win11 packages
  118. include_vars: "../vars/win11_packages.yml"
  119. when:
  120. - win11_packages is not defined
  121. - ansible_architecture == 'x86_64'
  122. - (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', '>='))
  123. - name: Append K8s packages if needed
  124. set_fact:
  125. common_packages: "{{ common_packages + k8s_packages + ['yunion-ocadm'] }}"
  126. when:
  127. - k8s_packages is defined
  128. - k8s_or_k3s | default('k8s') == 'k8s'
  129. - name: Append containerd packages if needed
  130. set_fact:
  131. common_packages: "{{ common_packages + containerd_packages }}"
  132. when:
  133. - containerd_packages is defined
  134. - 'enable_containerd|default(false) == true'
  135. - name: Update latest packages for CE
  136. set_fact:
  137. latest_packages: "{{ latest_packages | select('match', '^(?!.*climc-ee.*$).*') | list }}"
  138. when:
  139. - use_ee|default(false)|bool == false # false: CE
  140. - name: Lookup offline data path
  141. ansible.builtin.set_fact:
  142. offline_data_path: "{{ lookup('env', 'OFFLINE_DATA_PATH') }}"
  143. - name: Set offline data path var
  144. ansible.builtin.set_fact:
  145. offline_data_path: "{{ offline_data_path | default(offline_data_path_var) }}"
  146. - name: Set online status
  147. ansible.builtin.set_fact:
  148. online_status: "{% if offline_data_path and offline_data_path != '' %}offline{% else %}online{% endif %}"
  149. - name: Set offline deploy
  150. ansible.builtin.set_fact:
  151. offline_deploy: "{% if offline_data_path and offline_data_path != '' %}true{% else %}false{% endif %}"
  152. - name: Check if /usr/bin/python3 exists
  153. stat:
  154. path: /usr/bin/python3
  155. register: python3_stat
  156. - name: Set python interpreter
  157. set_fact:
  158. ansible_python_interpreter: "/usr/bin/python3"
  159. when: python3_stat.stat.exists
  160. - debug: var=online_status
  161. - name: set default fact is_running_on_vm
  162. set_fact:
  163. is_running_on_vm: false
  164. - name: detect if running on VM
  165. set_fact:
  166. is_running_on_vm: true
  167. when:
  168. - ansible_virtualization_type is defined
  169. - ansible_virtualization_type != ''
  170. - ansible_virtualization_type != 'NA'
  171. - ansible_virtualization_role | default("") != "host"
  172. - name: join as host condition
  173. set_fact:
  174. join_as_host: false
  175. - name: vm node join as host agent
  176. set_fact:
  177. join_as_host: true
  178. when:
  179. - k8s_node_as_oc_host|default(false)|bool == true
  180. - k8s_node_as_oc_host_on_vm | default(false)|bool == true
  181. - is_running_on_vm | default(false)|bool == true
  182. - name: physical node join as host agent
  183. set_fact:
  184. join_as_host: true
  185. when:
  186. - k8s_node_as_oc_host|default(false)|bool == true
  187. - is_running_on_vm | default(false)|bool == false
  188. - name: disable telegraf for host service
  189. include_role:
  190. name: utils/disable-telegraf-service
  191. when:
  192. - join_as_host | default(false)|bool == true
  193. - name: Unmount /tmp if mounted
  194. shell: |
  195. mount | grep 'tmpfs on /tmp' && umount -l /tmp || :
  196. become: yes
  197. args:
  198. executable: /bin/bash