* Update pre-commit actions This was done by running "pre-commit autoupdate --freeze". * Remove pre-commit only dependencies from requirements.in Including them in the file would create the illusion that those were the versions actually used in CI, but they are not. The exact versions are determined by the pre-commit hooks which are pinned in .pre-commit-config.yaml. * Ansible Lint: Fix role-name[path] * Ansible Lint: Fix name[play] * Ansible Lint: Fix key-order[task] * Ansible Lint: Fix jinja[spacing] * Ansible Lint: Fix no-free-form * Ansible Lint: Fix var-naming[no-reserved] * Ansible Lint: Fix yaml[comments] * Ansible Lint: Fix yaml[line-length] * Ansible Lint: Fix name[casing] * Ansible Lint: Fix no-changed-when * Ansible Lint: Fix fqcn[action] * Ansible Lint: Fix args[module] * Improve task naming
102 lines
3.0 KiB
YAML
102 lines
3.0 KiB
YAML
---
|
|
- name: Create manifests directory for temp configuration
|
|
file:
|
|
path: /tmp/k3s
|
|
state: directory
|
|
owner: "{{ ansible_user_id }}"
|
|
mode: 0755
|
|
with_items: "{{ groups['master'] }}"
|
|
run_once: true
|
|
|
|
- name: Copy metallb CRs manifest to first master
|
|
template:
|
|
src: "metallb.crs.j2"
|
|
dest: "/tmp/k3s/metallb-crs.yaml"
|
|
owner: "{{ ansible_user_id }}"
|
|
mode: 0755
|
|
with_items: "{{ groups['master'] }}"
|
|
run_once: true
|
|
|
|
- name: Test metallb-system namespace
|
|
command: >-
|
|
k3s kubectl -n metallb-system
|
|
changed_when: false
|
|
with_items: "{{ groups['master'] }}"
|
|
run_once: true
|
|
|
|
- name: Wait for MetalLB resources
|
|
command: >-
|
|
k3s kubectl wait {{ item.resource }}
|
|
--namespace='metallb-system'
|
|
{% if item.name | default(False) -%}{{ item.name }}{%- endif %}
|
|
{% if item.selector | default(False) -%}--selector='{{ item.selector }}'{%- endif %}
|
|
{% if item.condition | default(False) -%}{{ item.condition }}{%- endif %}
|
|
--timeout='{{ metal_lb_available_timeout }}'
|
|
changed_when: false
|
|
run_once: true
|
|
with_items:
|
|
- description: controller
|
|
resource: deployment
|
|
name: controller
|
|
condition: --for condition=Available=True
|
|
- description: webhook service
|
|
resource: pod
|
|
selector: component=controller
|
|
condition: --for=jsonpath='{.status.phase}'=Running
|
|
- description: pods in replica sets
|
|
resource: pod
|
|
selector: component=controller,app=metallb
|
|
condition: --for condition=Ready
|
|
- description: ready replicas of controller
|
|
resource: replicaset
|
|
selector: component=controller,app=metallb
|
|
condition: --for=jsonpath='{.status.readyReplicas}'=1
|
|
- description: fully labeled replicas of controller
|
|
resource: replicaset
|
|
selector: component=controller,app=metallb
|
|
condition: --for=jsonpath='{.status.fullyLabeledReplicas}'=1
|
|
- description: available replicas of controller
|
|
resource: replicaset
|
|
selector: component=controller,app=metallb
|
|
condition: --for=jsonpath='{.status.availableReplicas}'=1
|
|
loop_control:
|
|
label: "{{ item.description }}"
|
|
|
|
- name: Test metallb-system webhook-service endpoint
|
|
command: >-
|
|
k3s kubectl -n metallb-system get endpoints webhook-service
|
|
changed_when: false
|
|
with_items: "{{ groups['master'] }}"
|
|
run_once: true
|
|
|
|
- name: Apply metallb CRs
|
|
command: >-
|
|
k3s kubectl apply -f /tmp/k3s/metallb-crs.yaml
|
|
--timeout='{{ metal_lb_available_timeout }}'
|
|
register: this
|
|
changed_when: false
|
|
run_once: true
|
|
until: this.rc == 0
|
|
retries: 5
|
|
|
|
- name: Test metallb-system resources for Layer 2 configuration
|
|
command: >-
|
|
k3s kubectl -n metallb-system get {{ item }}
|
|
changed_when: false
|
|
run_once: true
|
|
when: metal_lb_mode == "layer2"
|
|
with_items:
|
|
- IPAddressPool
|
|
- L2Advertisement
|
|
|
|
- name: Test metallb-system resources for BGP configuration
|
|
command: >-
|
|
k3s kubectl -n metallb-system get {{ item }}
|
|
changed_when: false
|
|
run_once: true
|
|
when: metal_lb_mode == "bgp"
|
|
with_items:
|
|
- IPAddressPool
|
|
- BGPPeer
|
|
- BGPAdvertisement
|