metallb_chart_ref: "metallb/metallb"
metallb_strict_arp: true
metallb_default_values: {}

metallb_pool_name: "default"
metallb_namespace: "metallb-system"
metallb_bgp_advertisement_name: "local"
metallb_bgp_aggregation_length: 32
metallb_bgp_localpref: 100
metallb_bgp_peer_name: "bgppeer"
metallb_bgp_peer_port: 179
metallb_l2_advertisement_name: "local"

metallb_bgp_definitions: 
  metallb_address_pool: |
    apiVersion: metallb.io/v1beta1
    kind: IPAddressPool
    metadata:
      name: "{{ metallb_pool_name }}"
      namespace: "{{ metallb_namespace }}"
    spec:
      addresses: {{ metallb_address_pool }}

  metallb_bgp_advertisement: |
    apiVersion: metallb.io/v1beta1
    kind: BGPAdvertisement
    metadata:
      name: "{{ metallb_bgp_advertisement_name }}"
      namespace: "{{ metallb_namespace }}"
    spec:
      ipAddressPools:
      - "{{ metallb_pool_name }}"
      aggregationLength: {{ metallb_bgp_aggregation_length }}
      localpref: {{ metallb_bgp_localpref }}
      nodeSelectors:
      - matchExpressions:
        - key: node-role.kubernetes.io/control-plane
          operator: DoesNotExist

  metallb_peer: |
    apiVersion: metallb.io/v1beta2
    kind: BGPPeer
    metadata:
      name: "{{ metallb_bgp_peer_name }}"
      namespace: "{{ metallb_namespace }}"
    spec:
      myASN: {{ metallb_bgp_my_asn }} 
      peerASN: {{ metallb_bgp_peer_asn }}
      peerAddress: {{ metallb_bgp_peer_address }}
      peerPort: {{ metallb_bgp_peer_port }}

metallb_l2_definitions: 
  metallb_address_pool: |
    apiVersion: metallb.io/v1beta1
    kind: IPAddressPool
    metadata:
      name: "{{ metallb_pool_name }}"
      namespace: "{{ metallb_namespace }}"
    spec:
      addresses: "{{ metallb_address_pool }}"

  metallb_l2_advertisement: |
    apiVersion: metallb.io/v1beta1
    kind: L2Advertisement
    metadata:
      name: "{{ metallb_l2_advertisement_name }}"
      namespace: "{{ metallb_namespace }}"
    spec:
      ipAddressPools:
      - "{{ metallb_pool_name }}"
      nodeSelectors:
      - matchExpressions:
        - key: node-role.kubernetes.io/control-plane
          operator: DoesNotExist