You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

184 lines
4.5 KiB

9 years ago
7 years ago
7 years ago
  1. ---
  2. - import_tasks: facts.yml
  3. tags:
  4. - facts
  5. - import_tasks: pre_upgrade.yml
  6. tags:
  7. - kubelet
  8. - name: Ensure /var/lib/cni exists
  9. file:
  10. path: /var/lib/cni
  11. state: directory
  12. mode: 0755
  13. - import_tasks: install.yml
  14. tags:
  15. - kubelet
  16. - import_tasks: loadbalancer/nginx-proxy.yml
  17. when:
  18. - not is_kube_master
  19. - loadbalancer_apiserver_localhost
  20. - loadbalancer_apiserver_type == 'nginx'
  21. tags:
  22. - nginx
  23. - import_tasks: loadbalancer/haproxy.yml
  24. when:
  25. - not is_kube_master
  26. - loadbalancer_apiserver_localhost
  27. - loadbalancer_apiserver_type == 'haproxy'
  28. tags:
  29. - haproxy
  30. - name: Ensure nodePort range is reserved
  31. sysctl:
  32. name: net.ipv4.ip_local_reserved_ports
  33. value: "{{ kube_apiserver_node_port_range }}"
  34. sysctl_set: yes
  35. sysctl_file: "{{ sysctl_file_path }}"
  36. state: present
  37. reload: yes
  38. when: kube_apiserver_node_port_range is defined
  39. tags:
  40. - kube-proxy
  41. - name: Verify if br_netfilter module exists
  42. command: "modinfo br_netfilter"
  43. environment:
  44. PATH: "{{ ansible_env.PATH }}:/sbin" # Make sure we can workaround RH's conservative path management
  45. register: modinfo_br_netfilter
  46. failed_when: modinfo_br_netfilter.rc not in [0, 1]
  47. changed_when: false
  48. - name: Verify br_netfilter module path exists
  49. file:
  50. path: /etc/modules-load.d
  51. state: directory
  52. mode: 0755
  53. - name: Enable br_netfilter module
  54. modprobe:
  55. name: br_netfilter
  56. state: present
  57. when: modinfo_br_netfilter.rc == 0
  58. - name: Persist br_netfilter module
  59. copy:
  60. dest: /etc/modules-load.d/kubespray-br_netfilter.conf
  61. content: br_netfilter
  62. mode: 0644
  63. when: modinfo_br_netfilter.rc == 0
  64. # kube-proxy needs net.bridge.bridge-nf-call-iptables enabled when found if br_netfilter is not a module
  65. - name: Check if bridge-nf-call-iptables key exists
  66. command: "sysctl net.bridge.bridge-nf-call-iptables"
  67. failed_when: false
  68. changed_when: false
  69. register: sysctl_bridge_nf_call_iptables
  70. - name: Enable bridge-nf-call tables
  71. sysctl:
  72. name: "{{ item }}"
  73. state: present
  74. sysctl_file: "{{ sysctl_file_path }}"
  75. value: "1"
  76. reload: yes
  77. when: sysctl_bridge_nf_call_iptables.rc == 0
  78. with_items:
  79. - net.bridge.bridge-nf-call-iptables
  80. - net.bridge.bridge-nf-call-arptables
  81. - net.bridge.bridge-nf-call-ip6tables
  82. - name: Modprobe Kernel Module for IPVS
  83. modprobe:
  84. name: "{{ item }}"
  85. state: present
  86. with_items:
  87. - ip_vs
  88. - ip_vs_rr
  89. - ip_vs_wrr
  90. - ip_vs_sh
  91. when: kube_proxy_mode == 'ipvs'
  92. tags:
  93. - kube-proxy
  94. - name: Modprobe nf_conntrack_ipv4
  95. modprobe:
  96. name: nf_conntrack_ipv4
  97. state: present
  98. register: modprobe_nf_conntrack_ipv4
  99. ignore_errors: true # noqa ignore-errors
  100. when:
  101. - kube_proxy_mode == 'ipvs'
  102. tags:
  103. - kube-proxy
  104. - name: Persist ip_vs modules
  105. copy:
  106. dest: /etc/modules-load.d/kube_proxy-ipvs.conf
  107. mode: 0644
  108. content: |
  109. ip_vs
  110. ip_vs_rr
  111. ip_vs_wrr
  112. ip_vs_sh
  113. {% if modprobe_nf_conntrack_ipv4 is success -%}
  114. nf_conntrack_ipv4
  115. {%- endif -%}
  116. when: kube_proxy_mode == 'ipvs'
  117. tags:
  118. - kube-proxy
  119. - include_tasks: "cloud-credentials/{{ cloud_provider }}-credential-check.yml"
  120. when:
  121. - cloud_provider is defined
  122. - cloud_provider in [ 'openstack', 'azure', 'vsphere' ]
  123. tags:
  124. - cloud-provider
  125. - facts
  126. - name: Test if openstack_cacert is a base64 string
  127. set_fact:
  128. openstack_cacert_is_base64: "{% if openstack_cacert is search ('^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$') %}true{% else %}false{% endif %}"
  129. when:
  130. - cloud_provider is defined
  131. - cloud_provider == 'openstack'
  132. - openstack_cacert is defined
  133. - openstack_cacert | length > 0
  134. - name: Write cacert file
  135. copy:
  136. src: "{{ openstack_cacert if not openstack_cacert_is_base64 else omit }}"
  137. content: "{{ openstack_cacert | b64decode if openstack_cacert_is_base64 else omit }}"
  138. dest: "{{ kube_config_dir }}/openstack-cacert.pem"
  139. group: "{{ kube_cert_group }}"
  140. mode: 0640
  141. when:
  142. - cloud_provider is defined
  143. - cloud_provider == 'openstack'
  144. - openstack_cacert is defined
  145. - openstack_cacert | length > 0
  146. tags:
  147. - cloud-provider
  148. - name: Write cloud-config
  149. template:
  150. src: "cloud-configs/{{ cloud_provider }}-cloud-config.j2"
  151. dest: "{{ kube_config_dir }}/cloud_config"
  152. group: "{{ kube_cert_group }}"
  153. mode: 0640
  154. when:
  155. - cloud_provider is defined
  156. - cloud_provider in [ 'openstack', 'azure', 'vsphere', 'aws' ]
  157. notify: Node | restart kubelet
  158. tags:
  159. - cloud-provider
  160. - import_tasks: kubelet.yml
  161. tags:
  162. - kubelet
  163. - kubeadm