- set_fact: metallb_combined_values: "{{ metallb_default_values | combine(metallb_values | default({}), 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'