refactor(k3s): streamline inventory and primary server IP handling

Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev>
This commit is contained in:
Tuan-Dat Tran
2025-07-13 00:40:48 +02:00
parent dac0d88d60
commit f1b0cfad2c
21 changed files with 185 additions and 170 deletions

View File

@@ -1,17 +1,20 @@
- name: Set up Agents
hosts: k3s_nodes
gather_facts: yes
hosts: k3s
gather_facts: true
vars:
k3s_primary_server_ip: "{{ groups['k3s_server'] | map('extract', hostvars, 'ansible_host') | list | first }}"
pre_tasks:
- name: Get K3s token from the first server
when: host.ip == k3s.server.ips[0] and inventory_hostname in groups["k3s_server"]
when: host.ip == k3s_primary_server_ip and inventory_hostname in groups["k3s_server"]
slurp:
src: /var/lib/rancher/k3s/server/node-token
register: k3s_token
become: true
- name: Set fact on k3s.server.ips[0]
when: host.ip == k3s.server.ips[0] and inventory_hostname in groups["k3s_server"]
set_fact: k3s_token="{{ k3s_token['content'] | b64decode | trim }}"
- name: Set fact on k3s_primary_server_ip
when: host.ip == k3s_primary_server_ip and inventory_hostname in groups["k3s_server"]
set_fact:
k3s_token: "{{ k3s_token['content'] | b64decode | trim }}"
roles:
- role: common
@@ -20,7 +23,7 @@
- common
- role: k3s_agent
when: inventory_hostname in groups["k3s_agent"]
k3s_token: "{{ hostvars[(hostvars | dict2items | map(attribute='value') | map('dict2items') | map('selectattr', 'key', 'match', 'host') | map('selectattr', 'value.ip', 'match', k3s.server.ips[0] ) | select() | first | items2dict).host.hostname].k3s_token }}"
k3s_token: "{{ hostvars[(hostvars | dict2items | map(attribute='value') | map('dict2items') | map('selectattr', 'key', 'match', 'host') | map('selectattr', 'value.ip', 'match', k3s_primary_server_ip ) | select() | first | items2dict).host.hostname].k3s_token }}"
tags:
- k3s_agent
- role: node_exporter

View File

@@ -0,0 +1,17 @@
---
- name: Set up Servers
hosts: k3s
gather_facts: true
roles:
- role: common
tags:
- common
when: inventory_hostname in groups["k3s_loadbalancer"]
- role: k3s_loadbalancer
tags:
- k3s_loadbalancer
when: inventory_hostname in groups["k3s_loadbalancer"]
# - role: node_exporter
# tags:
# - node_exporter
# when: inventory_hostname in groups["k3s_loadbalancer"]

View File

@@ -1,7 +1,7 @@
---
- name: Set up Servers
hosts: k3s_server
gather_facts: yes
hosts: k3s
gather_facts: true
roles:
- role: common
tags:
@@ -9,6 +9,7 @@
- role: k3s_server
tags:
- k3s_server
when: inventory_hostname in groups["k3s_server"]
- role: node_exporter
tags:
- node_exporter

View File

@@ -1,17 +1,20 @@
- name: Set up storage
hosts: k3s_nodes
gather_facts: true
vars:
k3s_primary_server_ip: "{{ groups['k3s_server'] | map('extract', hostvars, 'ansible_host') | list | first }}"
pre_tasks:
- name: Get K3s token from the first server
when: host.ip == k3s.server.ips[0] and inventory_hostname in groups["k3s_server"]
when: host.ip == k3s_primary_server_ip and inventory_hostname in groups["k3s_server"]
slurp:
src: /var/lib/rancher/k3s/server/node-token
register: k3s_token
become: true
- name: Set fact on k3s.server.ips[0]
when: host.ip == k3s.server.ips[0] and inventory_hostname in groups["k3s_server"]
set_fact: k3s_token="{{ k3s_token['content'] | b64decode | trim }}"
- name: Set fact on k3s_primary_server_ip
when: host.ip == k3s_primary_server_ip and inventory_hostname in groups["k3s_server"]
set_fact:
k3s_token: "{{ k3s_token['content'] | b64decode | trim }}"
roles:
- role: common
@@ -20,7 +23,7 @@
- common
- role: k3s_storage
when: inventory_hostname in groups["k3s_storage"]
k3s_token: "{{ hostvars[(hostvars | dict2items | map(attribute='value') | map('dict2items') | map('selectattr', 'key', 'match', 'host') | map('selectattr', 'value.ip', 'match', k3s.server.ips[0] ) | select() | first | items2dict).host.hostname].k3s_token }}"
k3s_token: "{{ hostvars[(hostvars | dict2items | map(attribute='value') | map('dict2items') | map('selectattr', 'key', 'match', 'host') | map('selectattr', 'value.ip', 'match', k3s_primary_server_ip ) | select() | first | items2dict).host.hostname].k3s_token }}"
tags:
- k3s_storage
- role: node_exporter

View File

@@ -1,14 +0,0 @@
---
- name: Set up Servers
hosts: loadbalancer
gather_facts: yes
roles:
- role: common
tags:
- common
- role: loadbalancer
tags:
- loadbalancer
- role: node_exporter
tags:
- node_exporter