mirror of
https://github.com/techno-tim/k3s-ansible.git
synced 2026-10-23 20:22:03 +02:00
- Read the MetalLB speaker tag check from the managed host with slurp instead of a controller-side file lookup, and match the full image reference - Restore the tigera-operator namespace on the Calico operator Deployment wait while keeping the managed CRD waits cluster-scoped - Make Molecule verify inputs durable and scenario-specific via a per-scenario verify-vars.yml, driven by explicit verify_cni/verify_lb values instead of non-persisted converge facts - Rename the kube-vip multi-peer BGP env var from bgppeers to bgp_peers and vip_cidr to vip_subnet so v1.2.2 actually reads them - Map the legacy Cilium routed mode to tunnel and stop passing the alias directly to the chart - Use return-code based failed_when on apply and preflight commands so non-error failures are no longer treated as success - Clarify the sequential K3s upgrade path and backups in the README - Add kube-vip and MetalLB regression tests and a Cilium mode mapping unit
57 lines
2.4 KiB
YAML
57 lines
2.4 KiB
YAML
---
|
|
- name: Create manifests directory on first master
|
|
ansible.builtin.file:
|
|
path: /var/lib/rancher/k3s/server/manifests
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
when: ansible_hostname == hostvars[groups[group_name_master | default('master')][0]]['ansible_hostname']
|
|
|
|
- name: "Download to first master: manifest for metallb-{{ metal_lb_type }}"
|
|
ansible.builtin.get_url:
|
|
url: https://raw.githubusercontent.com/metallb/metallb/{{ metal_lb_controller_tag_version }}/config/manifests/metallb-{{ metal_lb_type }}.yaml # noqa yaml[line-length]
|
|
dest: /var/lib/rancher/k3s/server/manifests/metallb-crds.yaml
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
when: ansible_hostname == hostvars[groups[group_name_master | default('master')][0]]['ansible_hostname']
|
|
|
|
- name: Set image versions in manifest for metallb-{{ metal_lb_type }}
|
|
ansible.builtin.replace:
|
|
path: /var/lib/rancher/k3s/server/manifests/metallb-crds.yaml
|
|
regexp: "{{ item.change | ansible.builtin.regex_escape }}"
|
|
replace: "{{ item.to }}"
|
|
with_items:
|
|
- change: metallb/speaker:{{ metal_lb_controller_tag_version }}
|
|
to: metallb/speaker:{{ metal_lb_speaker_tag_version }}
|
|
loop_control:
|
|
label: "{{ item.change }} => {{ item.to }}"
|
|
when: ansible_hostname == hostvars[groups[group_name_master | default('master')][0]]['ansible_hostname']
|
|
|
|
- name: Read back MetalLB manifest from first master
|
|
ansible.builtin.slurp:
|
|
src: /var/lib/rancher/k3s/server/manifests/metallb-crds.yaml
|
|
register: metallb_manifest
|
|
when: ansible_hostname == hostvars[groups[group_name_master | default('master')][0]]['ansible_hostname']
|
|
|
|
- name: Check the MetalLB speaker image reference is present
|
|
ansible.builtin.set_fact:
|
|
metallb_manifest_has_speaker_tag: >-
|
|
{{
|
|
('quay.io/metallb/speaker:' ~ metal_lb_speaker_tag_version) in
|
|
(metallb_manifest.content | default('') | b64decode)
|
|
}}
|
|
when: ansible_hostname == hostvars[groups[group_name_master | default('master')][0]]['ansible_hostname']
|
|
|
|
- name: Fail if MetalLB speaker tag was not applied to the manifest
|
|
ansible.builtin.fail:
|
|
msg: >-
|
|
MetalLB speaker image reference
|
|
quay.io/metallb/speaker:{{ metal_lb_speaker_tag_version }}
|
|
was not found in the downloaded manifest. The upstream image
|
|
reference may have changed.
|
|
when:
|
|
- ansible_hostname == hostvars[groups[group_name_master | default('master')][0]]['ansible_hostname']
|
|
- not metallb_manifest_has_speaker_tag
|