40 lines
1.6 KiB
YAML
40 lines
1.6 KiB
YAML
- name: Parse manifests for container images
|
|
ansible.builtin.shell:
|
|
cmd: cat {{ item.dest }} | yq --no-doc eval '.. | .image? | select(.)' | awk '!/ /' | sort -u
|
|
register: parsedmanifests
|
|
loop: "{{ clusterapi_manifests.results }}"
|
|
loop_control:
|
|
label: "{{ item.dest | basename }}"
|
|
|
|
- name: Parse helm charts for container images
|
|
ansible.builtin.shell:
|
|
cmd: "{{ item.value.helm.parse_logic }}"
|
|
chdir: /opt/metacluster/helm-charts/{{ item.key }}
|
|
register: containerimages
|
|
when: item.value.helm is defined
|
|
loop: "{{ lookup('ansible.builtin.dict', components) }}"
|
|
loop_control:
|
|
label: "{{ item.key }}"
|
|
|
|
- name: Store container images in dicts
|
|
ansible.builtin.set_fact:
|
|
containerimages_{{ item.source }}: "{{ item.results }}"
|
|
loop:
|
|
- source: charts
|
|
results: "{{ containerimages | json_query('results[*].stdout_lines') | select() | flatten | list }}"
|
|
- source: manifests
|
|
results: "{{ parsedmanifests | json_query('results[*].stdout_lines') | select() | flatten | list }}"
|
|
loop_control:
|
|
label: "{{ item.source }}"
|
|
|
|
- name: Pull and store containerimages
|
|
ansible.builtin.shell:
|
|
cmd: >-
|
|
skopeo copy \
|
|
--insecure-policy \
|
|
--retry-times=5 \
|
|
docker://{{ item }} \
|
|
docker-archive:./{{ ( item | regex_findall('[^/:]+'))[-2] }}_{{ lookup('ansible.builtin.password', '/dev/null length=5 chars=ascii_lowercase,digits seed={{ item }}') }}.tar:{{ item }}
|
|
chdir: /opt/metacluster/container-images
|
|
loop: "{{ (containerimages_charts + containerimages_manifests + dependencies.container_images) | flatten | unique | sort }}"
|