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 310
310
become : yes
311
311
tags : k3s
312
312
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 :
314
338
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"
3
3
k3s_selinux_release : v1.6.latest.1
4
4
k3s_selinux_rpm_version : 1.6-1
5
5
k3s_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 }}
3
3
K3S_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"
21
21
prometheus_address : " {{ hostvars[groups['prometheus'].0].api_address }}"
22
22
openondemand_address : " {{ hostvars[groups['openondemand'].0].api_address if groups['openondemand'] | count > 0 else '' }}"
23
23
grafana_address : " {{ hostvars[groups['grafana'].0].api_address }}"
24
+ k3s_server_name : " {{ hostvars[groups['k3s_server'] | first].ansible_host }}"
24
25
25
26
# ############################ bootstrap: local user configuration #########################
26
27
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
-
9
1
data "external" "baremetal_nodes" {
10
2
# returns an empty map if cannot list baremetal nodes
11
3
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" {
183
183
type = number
184
184
default = 40
185
185
}
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