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.

74 lines
2.6 KiB

  1. ---
  2. - name: Kubernetes Apps | Check cluster settings for MetalLB
  3. fail:
  4. msg: "MetalLB require kube_proxy_strict_arp = true, see https://github.com/danderson/metallb/issues/153#issuecomment-518651132"
  5. when:
  6. - "kube_proxy_mode == 'ipvs' and not kube_proxy_strict_arp"
  7. - name: Kubernetes Apps | Check cluster settings for MetalLB
  8. fail:
  9. msg: "metallb_ip_range is mandatory to be specified for MetalLB"
  10. when:
  11. - metallb_ip_range is not defined or not metallb_ip_range
  12. - name: Kubernetes Apps | Check BGP peers for MetalLB
  13. fail:
  14. msg: "metallb_peers is mandatory when metallb_protocol is bgp"
  15. when:
  16. - metallb_protocol == 'bgp' and metallb_peers is not defined
  17. - name: Kubernetes Apps | Check AppArmor status
  18. command: which apparmor_parser
  19. register: apparmor_status
  20. when:
  21. - podsecuritypolicy_enabled
  22. - inventory_hostname == groups['kube_control_plane'][0]
  23. failed_when: false
  24. - name: Kubernetes Apps | Set apparmor_enabled
  25. set_fact:
  26. apparmor_enabled: "{{ apparmor_status.rc == 0 }}"
  27. when:
  28. - podsecuritypolicy_enabled
  29. - inventory_hostname == groups['kube_control_plane'][0]
  30. - name: Kubernetes Apps | Lay Down MetalLB
  31. become: true
  32. template: { src: "{{ item }}.j2", dest: "{{ kube_config_dir }}/{{ item }}" }
  33. with_items: ["metallb.yml", "metallb-config.yml"]
  34. register: "rendering"
  35. when:
  36. - "inventory_hostname == groups['kube_control_plane'][0]"
  37. - name: Kubernetes Apps | Install and configure MetalLB
  38. kube:
  39. name: "MetalLB"
  40. kubectl: "{{ bin_dir }}/kubectl"
  41. filename: "{{ kube_config_dir }}/{{ item.item }}"
  42. state: "{{ item.changed | ternary('latest','present') }}"
  43. become: true
  44. with_items: "{{ rendering.results }}"
  45. when:
  46. - "inventory_hostname == groups['kube_control_plane'][0]"
  47. - name: Kubernetes Apps | Check existing secret of MetalLB
  48. command: "{{ bin_dir }}/kubectl --kubeconfig /etc/kubernetes/admin.conf -n metallb-system get secret memberlist"
  49. register: metallb_secret
  50. become: true
  51. ignore_errors: yes
  52. when:
  53. - inventory_hostname == groups['kube_control_plane'][0]
  54. - name: Kubernetes Apps | Create random bytes for MetalLB
  55. command: "openssl rand -base64 32"
  56. register: metallb_rand
  57. when:
  58. - inventory_hostname == groups['kube_control_plane'][0]
  59. - metallb_secret.rc != 0
  60. - name: Kubernetes Apps | Install secret of MetalLB if not existing
  61. command: "{{ bin_dir }}/kubectl --kubeconfig /etc/kubernetes/admin.conf -n metallb-system create secret generic memberlist --from-literal=secretkey={{ metallb_rand.stdout }}"
  62. become: true
  63. when:
  64. - inventory_hostname == groups['kube_control_plane'][0]
  65. - metallb_secret.rc != 0