|
1 | 1 | ---
|
2 |
| - |
3 | 2 | - name: Download RKE2 installation script
|
4 | 3 | ansible.builtin.get_url:
|
5 | 4 | url: "{{ rke2_install_bash_url }}"
|
|
31 | 30 | - rke2_airgap_mode
|
32 | 31 | - rke2_airgap_implementation == 'download'
|
33 | 32 | block:
|
34 |
| - - name: Download sha256 checksum file |
35 |
| - ansible.builtin.get_url: |
36 |
| - url: "{{ rke2_artifact_url }}/{{ rke2_version }}/sha256sum-{{ rke2_architecture }}.txt" |
37 |
| - dest: "{{ rke2_artifact_path }}/sha256sum-{{ rke2_architecture }}.txt" |
38 |
| - force: yes |
39 |
| - mode: 0640 |
40 |
| - timeout: 30 |
41 |
| - - name: Download RKE2 artifacts and compare with checksums |
42 |
| - ansible.builtin.get_url: |
43 |
| - url: "{{ rke2_artifact_url }}/{{ rke2_version }}/{{ item }}" |
44 |
| - dest: "{{ rke2_artifact_path }}/{{ item }}" |
45 |
| - mode: 0640 |
46 |
| - checksum: "sha256:{{ rke2_artifact_url }}/{{ rke2_version }}/sha256sum-{{ rke2_architecture }}.txt" |
47 |
| - timeout: 30 |
48 |
| - with_items: "{{ rke2_artifact | reject('search', 'sha256sum') | list }}" |
| 33 | + - name: Download sha256 checksum file |
| 34 | + ansible.builtin.get_url: |
| 35 | + url: "{{ rke2_artifact_url }}/{{ rke2_version }}/sha256sum-{{ rke2_architecture }}.txt" |
| 36 | + dest: "{{ rke2_artifact_path }}/sha256sum-{{ rke2_architecture }}.txt" |
| 37 | + force: yes |
| 38 | + mode: 0640 |
| 39 | + timeout: 30 |
| 40 | + - name: Download RKE2 artifacts and compare with checksums |
| 41 | + ansible.builtin.get_url: |
| 42 | + url: "{{ rke2_artifact_url }}/{{ rke2_version }}/{{ item }}" |
| 43 | + dest: "{{ rke2_artifact_path }}/{{ item }}" |
| 44 | + mode: 0640 |
| 45 | + checksum: "sha256:{{ rke2_artifact_url }}/{{ rke2_version }}/sha256sum-{{ rke2_architecture }}.txt" |
| 46 | + timeout: 30 |
| 47 | + with_items: "{{ rke2_artifact | reject('search', 'sha256sum') | list }}" |
49 | 48 | rescue:
|
50 |
| - - name: "Remote downloading failed: Downloading locally and pushing to remote hosts" |
51 |
| - ansible.builtin.pause: # Slight delay to make sure you know it's gonna happen and have time to cancel |
52 |
| - seconds: 7 |
53 |
| - - name: "Create {{ rke2_airgap_copy_sourcepath }}" |
54 |
| - delegate_to: localhost |
55 |
| - run_once: true |
56 |
| - ansible.builtin.file: |
57 |
| - path: "{{ rke2_airgap_copy_sourcepath }}" |
58 |
| - state: directory |
59 |
| - - name: Download RKE2 checksum locally |
60 |
| - delegate_to: localhost |
61 |
| - run_once: true |
62 |
| - register: checksum_file |
63 |
| - ansible.builtin.get_url: |
64 |
| - url: "{{ rke2_artifact_url }}/{{ rke2_version }}/sha256sum-{{ rke2_architecture }}.txt" |
65 |
| - dest: "{{ rke2_airgap_copy_sourcepath }}/" |
66 |
| - force: yes |
67 |
| - mode: 0640 |
68 |
| - timeout: 30 |
69 |
| - - name: Downloading RKE2 artifacts locally |
70 |
| - delegate_to: localhost |
71 |
| - run_once: true |
72 |
| - ansible.builtin.get_url: |
73 |
| - force: yes |
74 |
| - url: "{{ item }}" |
75 |
| - dest: "{{ rke2_airgap_copy_sourcepath }}/" |
76 |
| - with_items: "{{ [rke2_artifact_url+'/'+rke2_version+'/'] | product(rke2_artifact) | map('join') | list + [rke2_install_bash_url] }}" |
77 |
| - - name: Copy local RKE2 files to remote hosts |
78 |
| - ansible.builtin.copy: |
79 |
| - src: "{{ rke2_airgap_copy_sourcepath }}/{{ item }}" |
80 |
| - dest: "{{ rke2_artifact_path }}/{{ item }}" |
81 |
| - mode: 0640 |
82 |
| - with_items: "{{ rke2_artifacts + ['rke2.sh'] }}" |
83 |
| - - name: Set RKE2 install script permissions |
84 |
| - ansible.builtin.file: |
85 |
| - path: "{{ rke2_artifact_path }}/rke2.sh" |
86 |
| - mode: 0750 |
| 49 | + - name: "Remote downloading failed: Downloading locally and pushing to remote hosts" |
| 50 | + ansible.builtin.pause: # Slight delay to make sure you know it's gonna happen and have time to cancel |
| 51 | + seconds: 7 |
| 52 | + - name: "Create {{ rke2_airgap_copy_sourcepath }}" |
| 53 | + delegate_to: localhost |
| 54 | + run_once: true |
| 55 | + ansible.builtin.file: |
| 56 | + path: "{{ rke2_airgap_copy_sourcepath }}" |
| 57 | + state: directory |
| 58 | + - name: Download RKE2 checksum locally |
| 59 | + delegate_to: localhost |
| 60 | + run_once: true |
| 61 | + register: checksum_file |
| 62 | + ansible.builtin.get_url: |
| 63 | + url: "{{ rke2_artifact_url }}/{{ rke2_version }}/sha256sum-{{ rke2_architecture }}.txt" |
| 64 | + dest: "{{ rke2_airgap_copy_sourcepath }}/" |
| 65 | + force: yes |
| 66 | + mode: 0640 |
| 67 | + timeout: 30 |
| 68 | + - name: Downloading RKE2 artifacts locally |
| 69 | + delegate_to: localhost |
| 70 | + run_once: true |
| 71 | + ansible.builtin.get_url: |
| 72 | + force: yes |
| 73 | + url: "{{ item }}" |
| 74 | + dest: "{{ rke2_airgap_copy_sourcepath }}/" |
| 75 | + with_items: "{{ [rke2_artifact_url+'/'+rke2_version+'/'] | product(rke2_artifact) | map('join') | list + [rke2_install_bash_url] }}" |
| 76 | + - name: Copy local RKE2 files to remote hosts |
| 77 | + ansible.builtin.copy: |
| 78 | + src: "{{ rke2_airgap_copy_sourcepath }}/{{ item }}" |
| 79 | + dest: "{{ rke2_artifact_path }}/{{ item }}" |
| 80 | + mode: 0640 |
| 81 | + with_items: "{{ rke2_artifacts + ['rke2.sh'] }}" |
| 82 | + - name: Set RKE2 install script permissions |
| 83 | + ansible.builtin.file: |
| 84 | + path: "{{ rke2_artifact_path }}/rke2.sh" |
| 85 | + mode: 0750 |
87 | 86 |
|
88 | 87 | - name: Copy local RKE2 artifacts
|
89 | 88 | ansible.builtin.copy:
|
|
102 | 101 | - ( rke2_airgap_copy_additional_tarballs | length > 0 )
|
103 | 102 | - rke2_airgap_implementation != 'exists'
|
104 | 103 | block:
|
105 |
| - - name: Create additional images tarballs folder |
106 |
| - ansible.builtin.file: |
107 |
| - path: "{{ rke2_tarball_images_path }}" |
108 |
| - state: directory |
109 |
| - mode: 0700 |
110 |
| - - name: Copy additional tarball images RKE2 components |
111 |
| - ansible.builtin.copy: |
112 |
| - src: "{{ rke2_airgap_copy_sourcepath }}/{{ item }}" |
113 |
| - dest: "{{ rke2_tarball_images_path }}/{{ item }}" |
114 |
| - mode: 0640 |
115 |
| - force: yes |
116 |
| - with_items: "{{ rke2_airgap_copy_additional_tarballs }}" |
| 104 | + - name: Create additional images tarballs folder |
| 105 | + ansible.builtin.file: |
| 106 | + path: "{{ rke2_tarball_images_path }}" |
| 107 | + state: directory |
| 108 | + mode: 0700 |
| 109 | + - name: Copy additional tarball images RKE2 components |
| 110 | + ansible.builtin.copy: |
| 111 | + src: "{{ rke2_airgap_copy_sourcepath }}/{{ item }}" |
| 112 | + dest: "{{ rke2_tarball_images_path }}/{{ item }}" |
| 113 | + mode: 0644 |
| 114 | + force: yes |
| 115 | + with_items: "{{ rke2_airgap_copy_additional_tarballs }}" |
117 | 116 |
|
118 | 117 | - name: Airgap mode - ensure artifacts exist and have acceptable permissions # only modifies permissions if they are overprivileged
|
119 | 118 | when:
|
|
123 | 122 | - name: Register artifacts
|
124 | 123 | ansible.builtin.stat:
|
125 | 124 | path: "{{ rke2_artifact_path }}/{{ item }}"
|
126 |
| - with_items: "{{ rke2_artifact }}" |
| 125 | + with_items: "{{ rke2_artifact }}" |
127 | 126 | register: artifacts
|
128 | 127 | - name: Register install script
|
129 | 128 | ansible.builtin.stat:
|
|
158 | 157 | path: /usr/local
|
159 | 158 | register: usr_local
|
160 | 159 |
|
| 160 | +- name: Check if separate partition |
| 161 | + ansible.builtin.command: grep '/usr/local ' /proc/mounts |
| 162 | + changed_when: false |
| 163 | + register: partition_result |
| 164 | + failed_when: partition_result.rc >= 2 |
| 165 | + |
161 | 166 | - name: Set RKE2 bin path
|
162 | 167 | ansible.builtin.set_fact:
|
163 |
| - rke2_bin_path: "{{ '/usr/local/bin/rke2' if usr_local.stat.writeable == True else ' /opt/rke2/bin/rke2' }}" |
| 168 | + rke2_bin_path: "{{ '/usr/local/bin/rke2' if (usr_local.stat.writeable) or (partition_result.rc == 1) else '/opt/rke2/bin/rke2' }}" |
164 | 169 |
|
165 | 170 | - name: Check RKE2 version
|
166 | 171 | ansible.builtin.shell: |
|
|
206 | 211 | - name: Run RKE2 install script
|
207 | 212 | when: rke2_version != installed_version
|
208 | 213 | block:
|
209 |
| - - name: Run the script with airgap variables |
210 |
| - ansible.builtin.command: |
211 |
| - cmd: "{{ rke2_install_script_dir }}/rke2.sh" |
212 |
| - environment: |
213 |
| - INSTALL_RKE2_ARTIFACT_PATH: "{{ rke2_artifact_path }}" |
214 |
| - INSTALL_RKE2_AGENT_IMAGES_DIR: "{{ rke2_data_path }}/agent/images" |
215 |
| - INSTALL_RKE2_METHOD: "{{ rke2_method }}" |
216 |
| - changed_when: false |
217 |
| - when: rke2_airgap_mode |
218 |
| - - name: Run RKE2 script without airgap variables |
219 |
| - ansible.builtin.command: |
220 |
| - cmd: "{{ rke2_install_script_dir }}/rke2.sh" |
221 |
| - environment: |
222 |
| - INSTALL_RKE2_VERSION: "{{ rke2_version }}" |
223 |
| - INSTALL_RKE2_CHANNEL_URL: "{{ rke2_channel_url }}" |
224 |
| - INSTALL_RKE2_CHANNEL: "{{ rke2_channel }}" |
225 |
| - INSTALL_RKE2_METHOD: "{{ rke2_method }}" |
226 |
| - changed_when: false |
227 |
| - when: not ansible_check_mode and not rke2_airgap_mode |
| 214 | + - name: Run the script with airgap variables |
| 215 | + ansible.builtin.command: |
| 216 | + cmd: "{{ rke2_install_script_dir }}/rke2.sh" |
| 217 | + environment: |
| 218 | + INSTALL_RKE2_ARTIFACT_PATH: "{{ rke2_artifact_path }}" |
| 219 | + INSTALL_RKE2_AGENT_IMAGES_DIR: "{{ rke2_data_path }}/agent/images" |
| 220 | + INSTALL_RKE2_METHOD: "{{ rke2_method }}" |
| 221 | + changed_when: false |
| 222 | + when: rke2_airgap_mode |
| 223 | + - name: Run RKE2 script without airgap variables |
| 224 | + ansible.builtin.command: |
| 225 | + cmd: "{{ rke2_install_script_dir }}/rke2.sh" |
| 226 | + environment: |
| 227 | + INSTALL_RKE2_VERSION: "{{ rke2_version }}" |
| 228 | + INSTALL_RKE2_CHANNEL_URL: "{{ rke2_channel_url }}" |
| 229 | + INSTALL_RKE2_CHANNEL: "{{ rke2_channel }}" |
| 230 | + INSTALL_RKE2_METHOD: "{{ rke2_method }}" |
| 231 | + changed_when: false |
| 232 | + when: not ansible_check_mode and not rke2_airgap_mode |
228 | 233 |
|
229 | 234 | - name: Copy Custom Manifests
|
230 | 235 | ansible.builtin.template:
|
|
239 | 244 | - name: Create /server/manifests directory
|
240 | 245 | when: rke2_custom_manifests or rke2_static_pods
|
241 | 246 | block:
|
242 |
| - - name: Create directory |
243 |
| - ansible.builtin.file: |
244 |
| - path: "{{ rke2_data_path }}/server/manifests" |
245 |
| - state: directory |
246 |
| - mode: 0755 |
247 |
| - - name: Copy Custom Manifests |
248 |
| - ansible.builtin.template: |
249 |
| - src: "{{ item }}" |
250 |
| - dest: "{{ rke2_data_path }}/server/manifests/{{ item | basename | regex_replace('\\.j2$', '') }}" |
251 |
| - owner: root |
252 |
| - group: root |
253 |
| - mode: 0644 |
254 |
| - with_fileglob: "{{ rke2_custom_manifests }}/*" |
255 |
| - when: |
256 |
| - - rke2_custom_manifests |
257 |
| - - inventory_hostname == groups[rke2_servers_group_name].0 |
258 |
| - - name: Copy Static Pods |
259 |
| - ansible.builtin.copy: |
260 |
| - src: "{{ item }}" |
261 |
| - dest: "{{ rke2_data_path }}/agent/pod-manifests/{{ item | basename | regex_replace('\\.j2$', '') }}" |
262 |
| - owner: root |
263 |
| - group: root |
264 |
| - mode: 0644 |
265 |
| - with_fileglob: "{{ rke2_static_pods }}/*" |
266 |
| - when: rke2_static_pods |
| 247 | + - name: Create directory |
| 248 | + ansible.builtin.file: |
| 249 | + path: "{{ rke2_data_path }}/server/manifests" |
| 250 | + state: directory |
| 251 | + mode: 0755 |
| 252 | + - name: Copy Custom Manifests |
| 253 | + ansible.builtin.template: |
| 254 | + src: "{{ item }}" |
| 255 | + dest: "{{ rke2_data_path }}/server/manifests/{{ item | basename | regex_replace('\\.j2$', '') }}" |
| 256 | + owner: root |
| 257 | + group: root |
| 258 | + mode: 0644 |
| 259 | + with_fileglob: "{{ rke2_custom_manifests }}/*" |
| 260 | + when: |
| 261 | + - rke2_custom_manifests |
| 262 | + - inventory_hostname == groups[rke2_servers_group_name].0 |
| 263 | + - name: Copy Static Pods |
| 264 | + ansible.builtin.copy: |
| 265 | + src: "{{ item }}" |
| 266 | + dest: "{{ rke2_data_path }}/agent/pod-manifests/{{ item | basename | regex_replace('\\.j2$', '') }}" |
| 267 | + owner: root |
| 268 | + group: root |
| 269 | + mode: 0644 |
| 270 | + with_fileglob: "{{ rke2_static_pods }}/*" |
| 271 | + when: rke2_static_pods |
267 | 272 |
|
268 | 273 | - name: Copy RKE2 environment file
|
269 | 274 | ansible.builtin.template:
|
|
0 commit comments