kubespray/roles/kubernetes-apps/metallb/tasks/main.yml

109 lines
3.5 KiB
YAML
Raw Normal View History

---
2021-04-11 15:37:59 +08:00
- name: Kubernetes Apps | Check cluster settings for MetalLB
fail:
msg: "MetalLB require kube_proxy_strict_arp = true, see https://github.com/danderson/metallb/issues/153#issuecomment-518651132"
when:
- "kube_proxy_mode == 'ipvs' and not kube_proxy_strict_arp"
- name: Kubernetes Apps | Check that the deprecated 'matallb_auto_assign' variable is not used anymore
fail:
msg: "'matallb_auto_assign' configuration variable is deprecated, please use 'metallb_auto_assign' instead"
when:
- matallb_auto_assign is defined
2021-04-11 15:37:59 +08:00
- name: Kubernetes Apps | Lay Down MetalLB
become: true
template:
src: "metallb.yaml.j2"
dest: "{{ kube_config_dir }}/metallb.yaml"
mode: 0644
register: metallb_rendering
when:
- inventory_hostname == groups['kube_control_plane'][0]
2021-04-11 15:37:59 +08:00
- name: Kubernetes Apps | Install and configure MetalLB
kube:
name: "MetalLB"
kubectl: "{{ bin_dir }}/kubectl"
filename: "{{ kube_config_dir }}/metallb.yaml"
state: "{{ metallb_rendering.changed | ternary('latest', 'present') }}"
wait: true
become: true
when:
- inventory_hostname == groups['kube_control_plane'][0]
- name: Kubernetes Apps | Wait for MetalLB controller to be running
command: "{{ bin_dir }}/kubectl -n metallb-system wait --for=condition=ready pod -l app=metallb,component=controller --timeout=2m"
become: true
when:
- inventory_hostname == groups['kube_control_plane'][0]
- name: MetalLB | Address pools
when:
- inventory_hostname == groups['kube_control_plane'][0]
- metallb_config.address_pools is defined
block:
- name: MetalLB | Layout address pools template
ansible.builtin.template:
src: pools.yaml.j2
dest: "{{ kube_config_dir }}/pools.yaml"
mode: 0644
register: pools_rendering
- name: MetalLB | Create address pools configuration
kube:
name: "MetalLB"
kubectl: "{{ bin_dir }}/kubectl"
filename: "{{ kube_config_dir }}/pools.yaml"
state: "{{ pools_rendering.changed | ternary('latest', 'present') }}"
become: true
- name: MetalLB | Layer2
when:
- inventory_hostname == groups['kube_control_plane'][0]
- metallb_config.layer2 is defined
block:
- name: MetalLB | Layout layer2 template
ansible.builtin.template:
src: layer2.yaml.j2
dest: "{{ kube_config_dir }}/layer2.yaml"
mode: 0644
register: layer2_rendering
- name: MetalLB | Create layer2 configuration
kube:
name: "MetalLB"
kubectl: "{{ bin_dir }}/kubectl"
filename: "{{ kube_config_dir }}/layer2.yaml"
state: "{{ layer2_rendering.changed | ternary('latest', 'present') }}"
become: true
- name: MetalLB | Layer3
when:
- inventory_hostname == groups['kube_control_plane'][0]
- metallb_config.layer3 is defined
block:
- name: MetalLB | Layout layer3 template
ansible.builtin.template:
src: layer3.yaml.j2
dest: "{{ kube_config_dir }}/layer3.yaml"
mode: 0644
register: layer3_rendering
- name: MetalLB | Create layer3 configuration
kube:
name: "MetalLB"
kubectl: "{{ bin_dir }}/kubectl"
filename: "{{ kube_config_dir }}/layer3.yaml"
state: "{{ layer3_rendering.changed | ternary('latest', 'present') }}"
become: true
- name: Kubernetes Apps | Delete MetalLB ConfigMap
kube:
name: config
kubectl: "{{ bin_dir }}/kubectl"
resource: ConfigMap
namespace: metallb-system
state: absent