mirror of
https://github.com/techno-tim/k3s-ansible.git
synced 2025-12-25 18:23:05 +01:00
Compare commits
7 Commits
v1.24.8+k3
...
v1.24.9+k3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c06af919f3 | ||
|
|
b86384c439 | ||
|
|
bf2bd1edc5 | ||
|
|
e98e3ee77c | ||
|
|
78f7a60378 | ||
|
|
e64fea760d | ||
|
|
764e32c778 |
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
k3s_version: v1.24.8+k3s1
|
k3s_version: v1.24.9+k3s1
|
||||||
# this is the user that has ssh access to these machines
|
# this is the user that has ssh access to these machines
|
||||||
ansible_user: ansibleuser
|
ansible_user: ansibleuser
|
||||||
systemd_dir: /etc/systemd/system
|
systemd_dir: /etc/systemd/system
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ ansible-compat==2.2.4
|
|||||||
# via
|
# via
|
||||||
# ansible-lint
|
# ansible-lint
|
||||||
# molecule
|
# molecule
|
||||||
ansible-core==2.13.5
|
ansible-core==2.14.1
|
||||||
# via
|
# via
|
||||||
# -r requirements.in
|
# -r requirements.in
|
||||||
# ansible-lint
|
# ansible-lint
|
||||||
@@ -92,7 +92,7 @@ kubernetes==25.3.0
|
|||||||
# via -r requirements.in
|
# via -r requirements.in
|
||||||
markupsafe==2.1.1
|
markupsafe==2.1.1
|
||||||
# via jinja2
|
# via jinja2
|
||||||
molecule==4.0.3
|
molecule==4.0.4
|
||||||
# via
|
# via
|
||||||
# -r requirements.in
|
# -r requirements.in
|
||||||
# molecule-vagrant
|
# molecule-vagrant
|
||||||
@@ -122,7 +122,7 @@ platformdirs==2.5.2
|
|||||||
# virtualenv
|
# virtualenv
|
||||||
pluggy==1.0.0
|
pluggy==1.0.0
|
||||||
# via molecule
|
# via molecule
|
||||||
pre-commit==2.20.0
|
pre-commit==2.21.0
|
||||||
# via -r requirements.in
|
# via -r requirements.in
|
||||||
pre-commit-hooks==4.4.0
|
pre-commit-hooks==4.4.0
|
||||||
# via -r requirements.in
|
# via -r requirements.in
|
||||||
@@ -191,8 +191,6 @@ subprocess-tee==0.3.5
|
|||||||
# via ansible-compat
|
# via ansible-compat
|
||||||
text-unidecode==1.3
|
text-unidecode==1.3
|
||||||
# via python-slugify
|
# via python-slugify
|
||||||
toml==0.10.2
|
|
||||||
# via pre-commit
|
|
||||||
urllib3==1.26.12
|
urllib3==1.26.12
|
||||||
# via
|
# via
|
||||||
# kubernetes
|
# kubernetes
|
||||||
@@ -203,7 +201,7 @@ wcmatch==8.4.1
|
|||||||
# via ansible-lint
|
# via ansible-lint
|
||||||
websocket-client==1.4.2
|
websocket-client==1.4.2
|
||||||
# via kubernetes
|
# via kubernetes
|
||||||
yamllint==1.28.0
|
yamllint==1.29.0
|
||||||
# via
|
# via
|
||||||
# -r requirements.in
|
# -r requirements.in
|
||||||
# ansible-lint
|
# ansible-lint
|
||||||
|
|||||||
@@ -13,51 +13,11 @@
|
|||||||
args:
|
args:
|
||||||
warn: false # The ansible systemd module does not support reset-failed
|
warn: false # The ansible systemd module does not support reset-failed
|
||||||
|
|
||||||
- name: Create manifests directory on first master
|
- name: Deploy vip manifest
|
||||||
file:
|
include_tasks: vip.yml
|
||||||
path: /var/lib/rancher/k3s/server/manifests
|
|
||||||
state: directory
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: 0644
|
|
||||||
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname']
|
|
||||||
|
|
||||||
- name: Copy vip rbac manifest to first master
|
- name: Deploy metallb manifest
|
||||||
template:
|
include_tasks: metallb.yml
|
||||||
src: "vip.rbac.yaml.j2"
|
|
||||||
dest: "/var/lib/rancher/k3s/server/manifests/vip-rbac.yaml"
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: 0644
|
|
||||||
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname']
|
|
||||||
|
|
||||||
- name: Copy vip manifest to first master
|
|
||||||
template:
|
|
||||||
src: "vip.yaml.j2"
|
|
||||||
dest: "/var/lib/rancher/k3s/server/manifests/vip.yaml"
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: 0644
|
|
||||||
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname']
|
|
||||||
|
|
||||||
# these will be copied and installed now, then tested later and apply config
|
|
||||||
- name: Copy metallb namespace to first master
|
|
||||||
template:
|
|
||||||
src: "metallb.namespace.j2"
|
|
||||||
dest: "/var/lib/rancher/k3s/server/manifests/metallb-namespace.yaml"
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: 0644
|
|
||||||
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname']
|
|
||||||
|
|
||||||
- name: Copy metallb namespace to first master
|
|
||||||
template:
|
|
||||||
src: "metallb.crds.j2"
|
|
||||||
dest: "/var/lib/rancher/k3s/server/manifests/metallb-crds.yaml"
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: 0644
|
|
||||||
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname']
|
|
||||||
|
|
||||||
- name: Init cluster inside the transient k3s-init service
|
- name: Init cluster inside the transient k3s-init service
|
||||||
command:
|
command:
|
||||||
|
|||||||
27
roles/k3s/master/tasks/metallb.yml
Normal file
27
roles/k3s/master/tasks/metallb.yml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
- name: Create manifests directory on first master
|
||||||
|
file:
|
||||||
|
path: /var/lib/rancher/k3s/server/manifests
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname']
|
||||||
|
|
||||||
|
- name: Copy metallb namespace to first master
|
||||||
|
template:
|
||||||
|
src: "metallb.namespace.j2"
|
||||||
|
dest: "/var/lib/rancher/k3s/server/manifests/metallb-namespace.yaml"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname']
|
||||||
|
|
||||||
|
- name: Copy metallb manifest to first master
|
||||||
|
template:
|
||||||
|
src: "metallb.crds.j2"
|
||||||
|
dest: "/var/lib/rancher/k3s/server/manifests/metallb-crds.yaml"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname']
|
||||||
27
roles/k3s/master/tasks/vip.yml
Normal file
27
roles/k3s/master/tasks/vip.yml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
- name: Create manifests directory on first master
|
||||||
|
file:
|
||||||
|
path: /var/lib/rancher/k3s/server/manifests
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname']
|
||||||
|
|
||||||
|
- name: Copy vip rbac manifest to first master
|
||||||
|
template:
|
||||||
|
src: "vip.rbac.yaml.j2"
|
||||||
|
dest: "/var/lib/rancher/k3s/server/manifests/vip-rbac.yaml"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname']
|
||||||
|
|
||||||
|
- name: Copy vip manifest to first master
|
||||||
|
template:
|
||||||
|
src: "vip.yaml.j2"
|
||||||
|
dest: "/var/lib/rancher/k3s/server/manifests/vip.yaml"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname']
|
||||||
@@ -1,92 +1,6 @@
|
|||||||
---
|
---
|
||||||
- name: Create manifests directory for temp configuration
|
- name: Deploy metallb pool
|
||||||
file:
|
include_tasks: metallb.yml
|
||||||
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
|
|
||||||
|
|
||||||
- name: Remove tmp directory used for manifests
|
- name: Remove tmp directory used for manifests
|
||||||
file:
|
file:
|
||||||
|
|||||||
89
roles/k3s/post/tasks/metallb.yml
Normal file
89
roles/k3s/post/tasks/metallb.yml
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
---
|
||||||
|
- 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
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
---
|
---
|
||||||
- name: Reboot
|
- name: reboot
|
||||||
reboot:
|
reboot:
|
||||||
|
|||||||
Reference in New Issue
Block a user