90 lines
2.7 KiB
YAML
90 lines
2.7 KiB
YAML
---
|
|
- name: Create manifests directory for temp configuration
|
|
file:
|
|
path: /tmp/k3s
|
|
state: directory
|
|
owner: "{{ ansible_user }}"
|
|
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 }}"
|
|
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
|
|
command: >-
|
|
k3s kubectl -n metallb-system get {{ item }}
|
|
changed_when: false
|
|
run_once: true
|
|
with_items:
|
|
- IPAddressPool
|
|
- L2Advertisement
|