File tree Expand file tree Collapse file tree 10 files changed +96
-84
lines changed
common/inventory/group_vars/all
skeleton/{{cookiecutter.environment}}/tofu Expand file tree Collapse file tree 10 files changed +96
-84
lines changed Original file line number Diff line number Diff line change 310310 become : yes
311311 tags : k3s
312312 tasks :
313- - ansible.builtin.include_role :
313+ - name : Install k3s
314+ when : " 'builder' in group_names"
315+ ansible.builtin.include_role :
316+ name : k3s
317+ tasks_from : install.yml
318+
319+ - hosts : k3s_server
320+ become : yes
321+ tags : k3s
322+ tasks :
323+ - name : Start k3s server
324+ when : " 'builder' not in group_names"
325+ ansible.builtin.include_role :
326+ name : k3s
327+ tasks_from : server-runtime.yml
328+
329+ - hosts : k3s_agent
330+ become : yes
331+ tags : k3s
332+ tasks :
333+ - name : Start k3s agents
334+ when : " 'builder' not in group_names"
335+ vars : # set outside of role to allow compute init to define own value
336+ k3s_bootstrap_token : " {{ hostvars[groups['k3s_server'] | first]._k3s_token_output.stdout | default('') }}"
337+ ansible.builtin.include_role :
314338 name : k3s
315- tasks_from : " {{ 'install.yml' if 'builder' in group_names else ' runtime.yml' }} "
339+ tasks_from : agent- runtime.yml
Original file line number Diff line number Diff line change @@ -3,4 +3,6 @@ k3s_version: "v1.31.0+k3s1"
33k3s_selinux_release : v1.6.latest.1
44k3s_selinux_rpm_version : 1.6-1
55k3s_helm_version : v3.11.0
6- k3s_bootstrap_token_expiry : 20m
6+ k3s_bootstrap_token : " {{ None }}" # ansible managed
7+ k3s_bootstrap_token_expiry : 10m
8+ k3s_server_name : " {{ None }}" # ansible managed
Original file line number Diff line number Diff line change 1+ ---
2+
3+ - name : Template k3s agent env file
4+ when : k3s_bootstrap_token != ""
5+ ansible.builtin.template :
6+ dest : /etc/systemd/system/k3s-agent.service.env
7+ src : k3s-agent.service.env.j2
8+ register : _k3s_agent_token_result
9+
10+ - name : Ensure password directory exists
11+ ansible.builtin.file :
12+ path : " /etc/rancher/node"
13+ state : directory
14+ owner : root
15+ group : root
16+ mode : 0640
17+
18+ - name : Write node password
19+ ansible.builtin.copy :
20+ dest : /etc/rancher/node/password
21+ content : " {{ vault_k3s_node_password }}"
22+ owner : root
23+ group : root
24+ mode : 0640 # normal k3s install is 644 but that doesn't feel right
25+
26+ - name : Start/restart k3s agent
27+ when : _k3s_agent_token_result.changed
28+ ansible.builtin.systemd :
29+ name : k3s-agent
30+ daemon_reload : true
31+ state : restarted
32+ enabled : true
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 1+ ---
2+
3+ - name : Template k3s env file
4+ ansible.builtin.template :
5+ dest : /etc/systemd/system/k3s.service.env
6+ src : k3s.service.env.j2
7+ register : _k3s_env_file_status
8+
9+ - name : Start k3s server
10+ ansible.builtin.systemd :
11+ name : k3s
12+ daemon_reload : " {{ _k3s_env_file_status.changed }}"
13+ state : started
14+ enabled : true
15+
16+ # Possible race here as there is a delay between agents disconnecting and being registered as down, probably won't be hit in general use though
17+ - name : Check if k3s agents are connected
18+ ignore_errors : true
19+ ansible.builtin.shell :
20+ cmd : kubectl get nodes --no-headers | grep -w Ready
21+ register : _k3s_connected_nodes
22+ retries : 5 # there may be a delay before the server reconnects to itself
23+ delay : 10
24+ until : not _k3s_connected_nodes.failed
25+
26+ - name : Generate new bootstrap token
27+ no_log : true
28+ when : _k3s_connected_nodes.stdout_lines | length != groups['k3s'] | length
29+ shell :
30+ cmd : " k3s token create --ttl {{ k3s_bootstrap_token_expiry }}"
31+ register : _k3s_token_output
Original file line number Diff line number Diff line change 1- K3S_NODE_IP={{ access_ip }}
2- K3S_TOKEN={{ hostvars[groups['control '] | firs t] ._token_output.stdout }}
1+ K3S_NODE_IP={{ ansible_host }}
2+ K3S_TOKEN={{ k3s_bootstrap_token }}
33K3S_URL=https://{{ k3s_server_name }}:6443
Original file line number Diff line number Diff line change 1- K3S_NODE_IP={{ access_ip }}
1+ K3S_NODE_IP={{ ansible_host }}
Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ opensearch_address: "127.0.0.1"
2121prometheus_address : " {{ hostvars[groups['prometheus'].0].api_address }}"
2222openondemand_address : " {{ hostvars[groups['openondemand'].0].api_address if groups['openondemand'] | count > 0 else '' }}"
2323grafana_address : " {{ hostvars[groups['grafana'].0].api_address }}"
24+ k3s_server_name : " {{ hostvars[groups['k3s_server'] | first].ansible_host }}"
2425
2526# ############################ bootstrap: local user configuration #########################
2627
Original file line number Diff line number Diff line change 1- data "external" "inventory_secrets" {
2- program = [" ${ path . module } /read-inventory-secrets.py" ]
3-
4- query = {
5- path = var.inventory_secrets_path == " " ? " ${ path . module } /../inventory/group_vars/all/secrets.yml" : var.inventory_secrets_path
6- }
7- }
8-
91data "external" "baremetal_nodes" {
102 # returns an empty map if cannot list baremetal nodes
113 program = [" ${ path . module } /baremetal-node-list.py" ]
Original file line number Diff line number Diff line change @@ -183,9 +183,3 @@ variable "root_volume_size" {
183183 type = number
184184 default = 40
185185}
186-
187- variable "inventory_secrets_path" {
188- description = " Path to inventory secrets.yml file. Default is standard cookiecutter location."
189- type = string
190- default = " "
191- }
You can’t perform that action at this time.
0 commit comments