homelab/build/config/ansible/roles/k3s_metallb/tasks/main.yml
Russell Seymour 1250c9cef6
Some checks are pending
deploy / deploy (push) Waiting to run
Initial checkin of code for managing homelab
2026-08-24 20:52:36 +01:00

39 lines
1.4 KiB
YAML

---
# Drops a HelmChart CR for MetalLB, plus its IPAddressPool/L2Advertisement
# config, into k3s's auto-deploying manifests directory; k3s's bundled
# helm-controller and deploy controller reconcile them — same mechanism as
# roles/k3s_monitoring (see its tasks/main.yml for why this needs no helm
# binary or kubeconfig on the controller).
#
# The config manifest references CRDs that only exist once the HelmChart
# above has actually installed the chart, so it's templated in the same
# pass rather than gated behind a "wait for CRDs" step: k3s's deploy
# controller retries a manifest referencing not-yet-existing CRDs until they
# show up, instead of failing once and giving up.
- name: Fail fast if no MetalLB address range is configured
ansible.builtin.assert:
that:
- k3s_metallb_address_range | length > 0
fail_msg: >-
k3s_metallb_address_range is empty — set it in
inventory/group_vars/k3s_cluster.yml before running playbooks/k3s.yml.
run_once: true
- name: Deploy the MetalLB HelmChart manifest
ansible.builtin.template:
src: metallb.helmchart.yaml.j2
dest: /var/lib/rancher/k3s/server/manifests/metallb.yaml
owner: root
group: root
mode: "0644"
become: true
- name: Deploy the MetalLB address pool config
ansible.builtin.template:
src: metallb-config.yaml.j2
dest: /var/lib/rancher/k3s/server/manifests/metallb-config.yaml
owner: root
group: root
mode: "0644"
become: true