ansible/roles/metallb/tasks/main.yaml

63 lines
1.8 KiB
YAML

- set_fact:
metallb_combined_values: "{{ metallb_default_values | combine(metallb_values, recursive=true) }}"
- name: Deploy MetalLB
kubernetes.core.helm:
create_namespace: true
release_namespace: "{{ metallb_namespace | default('metallb-system') }}"
release_name: "{{ metallb_name | default('metallb') }}"
chart_ref: "{{ metallb_chart_ref }}"
chart_version: "{{ metallb_version | default(omit) }}"
release_values: "{{ metallb_combined_values | from_yaml }}"
wait: true
- name: Check if kube-proxy ConfigMap exist
check_mode: false
shell: |
kubectl get configmap kube-proxy -n kube-system
register: _kube_proxy_configmap
failed_when: false
changed_when: false
- name: Check for strict arp
check_mode: false
shell: |
kubectl get configmap kube-proxy -n kube-system -o yaml | \
sed -e "s/strictARP: false/strictARP: true/" | \
kubectl diff -f - -n kube-system
register: check_strict_arp_status
when:
- _kube_proxy_configmap.rc == 0
- metallb_strict_arp
changed_when: check_strict_arp_status.rc != 0
- name: Apply strict arp
shell: |
kubectl get configmap kube-proxy -n kube-system -o yaml | \
sed -e "s/strictARP: false/strictARP: true/" | \
kubectl apply -f - -n kube-system \
&& kubectl -n kube-system delete pods --selector=k8s-app=kube-proxy
when:
- _kube_proxy_configmap.rc == 0
- metallb_strict_arp
- metallb_strict_arp_status.changed
- name: Apply MetalLB L2 definitions
k8s:
state: present
definition:
"{{ item.value }}"
wait: true
loop: "{{ metallb_bgp_definitions | dict2items }}"
when: metallb_advertisement_type == 'L2'
- name: Apply MetalLB BGP definitions
k8s:
state: present
definition:
"{{ item.value }}"
wait: true
loop: "{{ metallb_bgp_definitions | dict2items }}"
when: metallb_advertisement_type == 'BGP'