1
+ ---
2
+ - name : Check if k3s agents are already connected
3
+ service_facts :
4
+ register : services_state
5
+
6
+ - name : Initialise and authenticate k3s server and agents
7
+ vars :
8
+ k3s_server_name : " {{ hostvars[groups['k3s_server'].0].ansible_host }}"
9
+ access_ip : " {{ ansible_default_ipv4.address }}"
10
+ services_states : > # getting list of all unique agent service states
11
+ groups['k3s_agent']
12
+ | map('extract', hostvars, ['services', 'k3s-agent.service', 'state'])
13
+ | unique
14
+ when : not (services_state | length == 1 and services_state[0] == 'running')
15
+ block :
16
+ - name : Initialise server and generate bootstrap tokens
17
+ when : inventory_hostname in groups['k3s_server']
18
+ block :
19
+ - name : Template k3s env file
20
+ ansible.builtin.template :
21
+ dest : /etc/systemd/system/k3s.service.env
22
+ src : k3s.service.env.j2
23
+
24
+ - name : Start k3s server
25
+ ansible.builtin.systemd :
26
+ name : k3s
27
+ daemon_reload : true
28
+ state : started
29
+ enabled : true
30
+
31
+ - name : Generate bootstrap token
32
+ no_log : true
33
+ shell :
34
+ cmd : " k3s token create --ttl {{ k3s_bootstrap_token_expiry }}"
35
+ register : _token_output
36
+
37
+ - name : Initialise agents
38
+ when : inventory_hostname in groups['k3s_agent']
39
+ block :
40
+ - name : Template k3s agent env file
41
+ ansible.builtin.template :
42
+ dest : /etc/systemd/system/k3s-agent.service.env
43
+ src : k3s-agent.service.env.j2
44
+
45
+ - name : Ensure password directory exists
46
+ ansible.builtin.file :
47
+ path : " /etc/rancher/node"
48
+ state : directory
49
+
50
+ - name : Write node password
51
+ ansible.builtin.copy :
52
+ dest : /etc/rancher/node/password
53
+ content : " {{ vault_k3s_node_password }}"
54
+ owner : root
55
+ group : root
56
+ mode : 640 # normal k3s install is 644 but that doesn't feel right
57
+
58
+ - name : Start k3s agent
59
+ ansible.builtin.systemd :
60
+ name : k3s-agent
61
+ daemon_reload : true
62
+ state : started
63
+ enabled : true
64
+
0 commit comments