|
7 | 7 | when:
|
8 | 8 | - not mor_force
|
9 | 9 |
|
| 10 | +- name: Create temporary working directory |
| 11 | + ansible.builtin.tempfile: |
| 12 | + state: directory |
| 13 | + prefix: mor- |
| 14 | + register: _mor_tmp |
| 15 | + notify: "Remove temporary directory" |
| 16 | + when: mor_force or not _mor_target.stat.exists |
| 17 | + |
10 | 18 | - name: "Extract the OCP installer and metadata"
|
11 | 19 | when:
|
12 | 20 | - mor_force or not _mor_target.stat.exists
|
13 | 21 | block:
|
14 |
| - - name: "Extract installer and metadata from release image" |
15 |
| - ansible.builtin.shell: > |
16 |
| - flock -x {{ mor_cache_dir }}/{{ mor_version }}/release_extract.lock -c ' |
17 |
| - set -e; |
| 22 | + - name: "Extract installer from release image" |
| 23 | + ansible.builtin.command: > |
18 | 24 | {{ mor_oc }} adm release extract
|
19 | 25 | --registry-config {{ mor_auths_file }}
|
20 | 26 | --command={{ mor_installer }}
|
21 | 27 | --from {{ mor_pull_url }}
|
22 |
| - --to "{{ mor_cache_dir }}/{{ mor_version }}"; |
| 28 | + --to "{{ _mor_tmp.path }}" |
| 29 | + register: _mor_extract_res |
| 30 | + retries: 9 |
| 31 | + delay: 10 |
| 32 | + until: _mor_extract_res is not failed |
| 33 | + changed_when: _mor_extract_res.rc == 0 |
| 34 | + |
| 35 | + - name: "Extract metadata from release image" |
| 36 | + ansible.builtin.command: > |
23 | 37 | {{ mor_oc }} adm release extract
|
24 | 38 | --registry-config {{ mor_auths_file }}
|
25 | 39 | --tools
|
26 | 40 | --from {{ mor_pull_url }}
|
27 |
| - --to "{{ mor_cache_dir }}/{{ mor_version }}"' |
| 41 | + --to "{{ _mor_tmp.path }}" |
28 | 42 | register: _mor_extract_res
|
29 | 43 | retries: 9
|
30 | 44 | delay: 10
|
31 | 45 | until: _mor_extract_res is not failed
|
32 |
| - changed_when: false |
| 46 | + changed_when: _mor_extract_res.rc == 0 |
33 | 47 |
|
34 | 48 | - name: "Extract rhcos.json if version >= 4.8"
|
35 | 49 | when:
|
36 | 50 | - mor_version is version("4.8", ">=")
|
37 | 51 | ansible.builtin.shell: >
|
38 |
| - flock -x "{{ mor_cache_dir }}/{{ mor_version }}/release_extract.lock" -c '{ |
39 |
| - "{{ mor_cache_dir }}/{{ mor_version }}/{{ mor_installer }}" coreos print-stream-json > |
40 |
| - "{{ mor_cache_dir }}/{{ mor_version }}/rhcos.json"; |
41 |
| - }' |
| 52 | + "{{ _mor_tmp.path }}/{{ mor_installer }}" coreos print-stream-json > |
| 53 | + "{{ _mor_tmp.path }}/rhcos.json" |
| 54 | + args: |
| 55 | + creates: "{{ _mor_tmp.path }}/rhcos.json" |
42 | 56 |
|
43 | 57 | - name: "Download rhcos.json (< 4.8)"
|
44 | 58 | when:
|
|
47 | 61 | - name: "Get Git SHA from installer"
|
48 | 62 | ansible.builtin.shell: >
|
49 | 63 | set -e -o pipefail;
|
50 |
| - {{ mor_cache_dir }}/{{ mor_version }}/openshift-baremetal-install version | |
| 64 | + {{ _mor_tmp.path }}/openshift-baremetal-install version | |
51 | 65 | grep "^built from" |
|
52 | 66 | awk '{ print $NF }'
|
53 | 67 | register: _mor_commit_id
|
|
57 | 71 | ansible.builtin.include_tasks: fetch.yml
|
58 | 72 | vars:
|
59 | 73 | mor_uri: "https://raw.githubusercontent.com/openshift/installer/{{ _mor_commit_id.stdout }}/data/data/rhcos.json"
|
60 |
| - mor_dir: "{{ mor_cache_dir }}/{{ mor_version }}" |
| 74 | + mor_dir: "{{ _mor_tmp.path }}" |
61 | 75 |
|
62 | 76 | - name: "Figure out status of SELinux"
|
63 | 77 | ansible.builtin.command: /usr/sbin/selinuxenabled
|
|
66 | 80 | changed_when: false
|
67 | 81 |
|
68 | 82 | - name: Apply SELinux container file context to extracted files
|
69 |
| - ansible.builtin.sefcontext: |
70 |
| - target: "{{ mor_cache_dir }}/{{ mor_version }}" |
| 83 | + community.general.sefcontext: |
| 84 | + target: "{{ _mor_tmp.path }}" |
71 | 85 | setype: container_file_t
|
72 | 86 | become: true
|
73 | 87 | register: _mor_cache_secontext
|
|
79 | 93 |
|
80 | 94 | - name: "Make installer command readable from HTTP"
|
81 | 95 | ansible.builtin.file:
|
82 |
| - path: "{{ mor_cache_dir }}/{{ mor_version }}/{{ mor_installer }}" |
| 96 | + path: "{{ _mor_tmp.path }}/{{ mor_installer }}" |
83 | 97 | state: file
|
84 | 98 | owner: "{{ mor_owner }}"
|
85 | 99 | group: "{{ mor_group }}"
|
|
90 | 104 | delay: 5
|
91 | 105 | until: _mor_install_mode is not failed
|
92 | 106 |
|
| 107 | + - name: Copy artifacts to release directory |
| 108 | + ansible.builtin.copy: |
| 109 | + src: "{{ _mor_tmp.path }}/" |
| 110 | + dest: "{{ mor_cache_dir }}/{{ mor_version }}/" |
| 111 | + mode: preserve |
93 | 112 | always:
|
94 |
| - - name: "Ensure lock file is removed" |
| 113 | + - name: Remove temporary directory |
95 | 114 | ansible.builtin.file:
|
96 |
| - path: "{{ mor_cache_dir }}/{{ mor_version }}/release_extract.lock" |
| 115 | + path: "{{ _mor_tmp.path }}" |
97 | 116 | state: absent
|
98 | 117 | ...
|
0 commit comments