main.yml 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. ---
  2. - name: Install Dependent Ubuntu Packages
  3. when: ansible_distribution in ['Ubuntu']
  4. ansible.builtin.apt:
  5. name: policycoreutils # Used by install script to restore SELinux context
  6. update_cache: true
  7. - name: Enable IPv4 forwarding
  8. sysctl:
  9. name: net.ipv4.ip_forward
  10. value: "1"
  11. state: present
  12. reload: true
  13. - name: Enable IPv6 forwarding
  14. sysctl:
  15. name: net.ipv6.conf.all.forwarding
  16. value: "1"
  17. state: present
  18. reload: true
  19. when: ip_type is defined and ip_type == 'ipv6' or ansible_all_ipv6_addresses
  20. - name: Populate service facts
  21. ansible.builtin.service_facts:
  22. # - name: Allow UFW Exceptions
  23. # when:
  24. # - ansible_facts.services['ufw'] is defined
  25. # - ansible_facts.services['ufw'].state == 'running'
  26. # block:
  27. # - name: Get ufw status
  28. # ansible.builtin.command:
  29. # cmd: ufw status
  30. # changed_when: false
  31. # register: ufw_status
  32. #
  33. # - name: If ufw enabled, open api port
  34. # when:
  35. # - ufw_status['stdout'] == "Status':' active"
  36. # community.general.ufw:
  37. # rule: allow
  38. # port: "{{ api_port }}"
  39. # proto: tcp
  40. #
  41. # - name: If ufw enabled, open etcd ports
  42. # when:
  43. # - ufw_status['stdout'] == "Status':' active"
  44. # - groups['server'] | length > 1
  45. # community.general.ufw:
  46. # rule: allow
  47. # port: "2379:2381"
  48. # proto: tcp
  49. #
  50. # - name: If ufw enabled, allow default CIDRs
  51. # when:
  52. # - ufw_status['stdout'] == "Status':' active"
  53. # community.general.ufw:
  54. # rule: allow
  55. # src: '{{ item }}'
  56. # loop:
  57. # - 10.42.0.0/16 # Pods
  58. # - 10.43.0.0/16 # Services
  59. # - name: Allow Firewalld Exceptions
  60. # when:
  61. # - ansible_facts.services['firewalld.service'] is defined
  62. # - ansible_facts.services['firewalld.service'].state == 'running'
  63. # block:
  64. # - name: If firewalld enabled, open api port
  65. # ansible.posix.firewalld:
  66. # port: "{{ api_port }}/tcp"
  67. # zone: trusted
  68. # state: enabled
  69. # permanent: true
  70. # immediate: true
  71. #
  72. # - name: If firewalld enabled, open etcd ports
  73. # when: groups['server'] | length > 1
  74. # ansible.posix.firewalld:
  75. # port: "2379-2381/tcp"
  76. # zone: trusted
  77. # state: enabled
  78. # permanent: true
  79. # immediate: true
  80. #
  81. # - name: If firewalld enabled, allow default CIDRs
  82. # ansible.posix.firewalld:
  83. # source: "{{ item }}"
  84. # zone: trusted
  85. # state: enabled
  86. # permanent: true
  87. # immediate: true
  88. # loop:
  89. # - 10.42.0.0/16 # Pods
  90. # - 10.43.0.0/16 # Services
  91. - name: Disable nm-cloud-setup.service for k3s service
  92. ansible.builtin.systemd:
  93. name: nm-cloud-setup.service
  94. state: stopped
  95. enabled: false
  96. ignore_errors: true
  97. - name: Add br_netfilter to /etc/modules-load.d/
  98. ansible.builtin.copy:
  99. content: "br_netfilter"
  100. dest: /etc/modules-load.d/br_netfilter.conf
  101. mode: "u=rw,g=,o="
  102. when: (ansible_os_family == 'RedHat' or ansible_distribution == 'Archlinux')
  103. - name: Load br_netfilter
  104. modprobe:
  105. name: br_netfilter
  106. state: present
  107. when: (ansible_os_family == 'RedHat' or ansible_distribution == 'Archlinux')
  108. - name: Set bridge-nf-call-iptables (just to be sure)
  109. sysctl:
  110. name: "{{ item }}"
  111. value: "1"
  112. state: present
  113. reload: true
  114. when: (ansible_os_family == 'RedHat' or ansible_distribution == 'Archlinux')
  115. loop:
  116. - net.bridge.bridge-nf-call-iptables
  117. - net.bridge.bridge-nf-call-ip6tables
  118. - name: Check for Apparmor existence
  119. ansible.builtin.stat:
  120. path: /sys/module/apparmor/parameters/enabled
  121. register: apparmor_enabled
  122. - name: Check if Apparmor is enabled
  123. when: apparmor_enabled.stat.exists
  124. ansible.builtin.command: cat /sys/module/apparmor/parameters/enabled
  125. register: apparmor_status
  126. changed_when: false
  127. - name: Install Apparmor Parser [Suse]
  128. when:
  129. - ansible_os_family == 'Suse'
  130. - apparmor_status is defined
  131. - apparmor_status.stdout == "Y"
  132. ansible.builtin.package:
  133. name: apparmor-parser
  134. state: present
  135. - name: Install Apparmor Parser [Debian]
  136. when:
  137. - ansible_distribution == 'Debian'
  138. - ansible_facts['distribution_major_version'] == "11"
  139. - apparmor_status is defined
  140. - apparmor_status.stdout == "Y"
  141. ansible.builtin.package:
  142. name: apparmor
  143. state: present
  144. - name: Gather the package facts
  145. ansible.builtin.package_facts:
  146. manager: auto
  147. # Iptables v1.8.0-1.8.4 have a specific bug with K3s. https://github.com/k3s-io/k3s/issues/3117
  148. - name: If iptables v1.8.0-1.8.4, warn user # noqa ignore-errors
  149. when:
  150. - ansible_facts.packages['iptables'] is defined
  151. - ansible_facts.packages['iptables'][0]['version'] is version('1.8.5', '<')
  152. - ansible_facts.packages['iptables'][0]['version'] is version('1.7.9', '>')
  153. ansible.builtin.fail:
  154. msg:
  155. - "Warning: Iptables {{ ansible_facts.packages['iptables'][0]['version'] }} found."
  156. - "Add '--prefer-bundled-bin' to extra_server_args variable to use the bundled iptables binary."
  157. ignore_errors: true
  158. - name: Add /usr/local/bin to sudo secure_path
  159. ansible.builtin.lineinfile:
  160. line: 'Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin'
  161. regexp: "Defaults(\\s)*secure_path(\\s)*="
  162. state: present
  163. insertafter: EOF
  164. path: /etc/sudoers
  165. validate: 'visudo -cf %s'
  166. when: ansible_os_family == 'RedHat'
  167. - name: Setup alternative K3s directory
  168. when:
  169. - k3s_server_location is defined
  170. - k3s_server_location != "/var/lib/rancher/k3s"
  171. block:
  172. - name: Make rancher directory
  173. ansible.builtin.file:
  174. path: "/var/lib/rancher"
  175. mode: 0755
  176. state: directory
  177. - name: Create symlink
  178. ansible.builtin.file:
  179. dest: /var/lib/rancher/k3s
  180. src: "{{ k3s_server_location }}"
  181. force: true
  182. state: link