diff --git a/ansible/roles/metacluster/tasks/components.yml b/ansible/roles/metacluster/tasks/components.yml index bd026f6..e57d7bc 100644 --- a/ansible/roles/metacluster/tasks/components.yml +++ b/ansible/roles/metacluster/tasks/components.yml @@ -4,6 +4,7 @@ state: directory loop: - /opt/metacluster/helm-charts + - /opt/metacluster/manifests - /opt/metacluster/container-images - name: Add helm repositories @@ -45,6 +46,29 @@ loop_control: label: "{{ item.key }}" +- block: + + - name: Retrieve Cluster-API manifests + ansible.builtin.command: + cmd: clusterctl config repositories | awk '/CoreProvider|kubeadm|vsphere/ {print $(NF-1)"download/"$NF}' + register: clusterapi_manifests + + - name: Download manifests + ansible.builtin.get_url: + url: "{{ item }}" + dest: "/opt/metacluster/manifests/{{ item | basename }}" + loop: "{{ clusterapi_manifests.stdout_lines }}" + + - name: Parse manifests + ansible.builtin.shell: + cmd: cat {{ item }} | yq --no-doc eval '.. | .image? | select(.)' | awk '!/ /' | sort + register: parsedmanifests + loop: "{{ query('ansible.builtin.fileglob', '/opt/metacluster/manifests/*.yaml') | sort }}" + + - name: Store container images + ansible.builtin.set_fact: + clusterapi_containerimages: parsedmanifests.results | json_query('results[*].stdout') + - name: Pull and store containerimages ansible.builtin.shell: cmd: >- @@ -54,7 +78,7 @@ docker://{{ item }} \ docker-archive:./{{ ( item | regex_findall('[^/:]+'))[-2] }}.tar:{{ item }} chdir: /opt/metacluster/container-images - loop: "{{ ((containerimages.results | map(attribute='stdout_lines') | flatten) + dependencies.container_images) | unique }}" + loop: "{{ ((containerimages.results | map(attribute='stdout_lines') | flatten) + dependencies.container_images + clusterapi_containerimages) | unique }}" # - name: Inject manifests # ansible.builtin.template: diff --git a/ansible/vars/metacluster.yml b/ansible/vars/metacluster.yml index 348d329..d30300e 100644 --- a/ansible/vars/metacluster.yml +++ b/ansible/vars/metacluster.yml @@ -189,7 +189,7 @@ dependencies: static_binaries: - filename: clusterctl - url: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.2.2/clusterctl-linux-amd64 + url: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.2.3/clusterctl-linux-amd64 - filename: govc url: https://github.com/vmware/govmomi/releases/download/v0.29.0/govc_Linux_x86_64.tar.gz archive: compressed