forked from tim/k3s-ansible
db30128468
- Add shared download_retries/download_delay defaults in k3s_server and k3s_server_post roles - Retry calico CRD and Tigera operator manifest downloads - Retry Cilium CLI download and cilium install/upgrade command - Retry kube-vip cloud provider and MetalLB manifest downloads - The CI runner's resolver intermittently times out on GitHub-hosted domains
61 lines
2.6 KiB
YAML
61 lines
2.6 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"
|
|
register: metallb_manifest_download
|
|
retries: "{{ download_retries }}"
|
|
delay: "{{ download_delay }}"
|
|
until: metallb_manifest_download is succeeded
|
|
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
|