diff --git a/.gitignore b/.gitignore index b74be25..cd272f2 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ data/bin/* data/volumes/* data/images/* +!data/images/containers +data/images/containers/* docs/archives/textfiles/ docs/notes/* *.sql diff --git a/ansible/roles/app/tasks/services/set_affine.yaml b/ansible/roles/app/tasks/services/set_affine.yaml index db434b0..cbd31aa 100644 --- a/ansible/roles/app/tasks/services/set_affine.yaml +++ b/ansible/roles/app/tasks/services/set_affine.yaml @@ -161,3 +161,38 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/{{ item.file }}.tar" + loop: + - image: "docker.io/manticoresearch/manticore:{{ version['containers']['manticore'] }}" + file: "docker.io_manticoresearch_manticore_{{ version['containers']['manticore'] }}" + - image: "docker.io/library/redis:{{ version['containers']['redis'] }}" + file: "docker.io_library_redis_{{ version['containers']['redis'] }}" + - image: "ghcr.io/toeverything/affine:{{ version['containers']['affine'] }}" + file: "ghcr.io_toeverything_affine_{{ version['containers']['affine'] }}" + loop_control: + label: "{{ item.file }}" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "{{ item.item.image }}" + dest: "{{ node['home_path'] }}/archives/containers/{{ item.item.file }}.tar" + format: "oci-archive" + force: false + loop: "{{ container_archive_images.results }}" + loop_control: + label: "{{ item.item.file }}" + when: not item.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/{{ item.item.file }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true + loop: "{{ container_archive_images.results }}" + loop_control: + label: "{{ item.item.file }}" diff --git a/ansible/roles/app/tasks/services/set_collabora.yaml b/ansible/roles/app/tasks/services/set_collabora.yaml index 9d661c4..9a6abd3 100644 --- a/ansible/roles/app/tasks/services/set_collabora.yaml +++ b/ansible/roles/app/tasks/services/set_collabora.yaml @@ -15,3 +15,23 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/docker.io_collabora_code_{{ version['containers']['collabora'] }}.tar" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "docker.io/collabora/code:{{ version['containers']['collabora'] }}" + dest: "{{ node['home_path'] }}/archives/containers/docker.io_collabora_code_{{ version['containers']['collabora'] }}.tar" + format: "oci-archive" + force: false + when: not container_archive_images.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/docker.io_collabora_code_{{ version['containers']['collabora'] }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true diff --git a/ansible/roles/app/tasks/services/set_gitea.yaml b/ansible/roles/app/tasks/services/set_gitea.yaml index 00ebe2b..24ee5f9 100644 --- a/ansible/roles/app/tasks/services/set_gitea.yaml +++ b/ansible/roles/app/tasks/services/set_gitea.yaml @@ -49,3 +49,23 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/docker.io_gitea_gitea_{{ version['containers']['gitea'] }}.tar" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "docker.io/gitea/gitea:{{ version['containers']['gitea'] }}" + dest: "{{ node['home_path'] }}/archives/containers/docker.io_gitea_gitea_{{ version['containers']['gitea'] }}.tar" + format: "oci-archive" + force: false + when: not container_archive_images.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/docker.io_gitea_gitea_{{ version['containers']['gitea'] }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true diff --git a/ansible/roles/app/tasks/services/set_immich.yaml b/ansible/roles/app/tasks/services/set_immich.yaml index c62607d..2b41a54 100644 --- a/ansible/roles/app/tasks/services/set_immich.yaml +++ b/ansible/roles/app/tasks/services/set_immich.yaml @@ -118,3 +118,38 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/{{ item.file }}.tar" + loop: + - image: "docker.io/library/redis:{{ version['containers']['redis'] }}" + file: "docker.io_library_redis_{{ version['containers']['redis'] }}" + - image: "ghcr.io/immich-app/immich-machine-learning:{{ version['containers']['immich'] }}-openvino" + file: "ghcr.io_immich-app_immich-machine-learning_{{ version['containers']['immich'] }}-openvino" + - image: "ghcr.io/immich-app/immich-server:{{ version['containers']['immich'] }}" + file: "ghcr.io_immich-app_immich-server_{{ version['containers']['immich'] }}" + loop_control: + label: "{{ item.file }}" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "{{ item.item.image }}" + dest: "{{ node['home_path'] }}/archives/containers/{{ item.item.file }}.tar" + format: "oci-archive" + force: false + loop: "{{ container_archive_images.results }}" + loop_control: + label: "{{ item.item.file }}" + when: not item.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/{{ item.item.file }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true + loop: "{{ container_archive_images.results }}" + loop_control: + label: "{{ item.item.file }}" diff --git a/ansible/roles/app/tasks/services/set_nextcloud.yaml b/ansible/roles/app/tasks/services/set_nextcloud.yaml index 224f76f..bca5cca 100644 --- a/ansible/roles/app/tasks/services/set_nextcloud.yaml +++ b/ansible/roles/app/tasks/services/set_nextcloud.yaml @@ -174,3 +174,36 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/{{ item.file }}.tar" + loop: + - image: "docker.io/library/redis:{{ version['containers']['redis'] }}" + file: "docker.io_library_redis_{{ version['containers']['redis'] }}" + - image: "docker.io/library/nextcloud:{{ version['containers']['nextcloud'] }}" + file: "docker.io_library_nextcloud_{{ version['containers']['nextcloud'] }}" + loop_control: + label: "{{ item.file }}" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "{{ item.item.image }}" + dest: "{{ node['home_path'] }}/archives/containers/{{ item.item.file }}.tar" + format: "oci-archive" + force: false + loop: "{{ container_archive_images.results }}" + loop_control: + label: "{{ item.item.file }}" + when: not item.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/{{ item.item.file }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true + loop: "{{ container_archive_images.results }}" + loop_control: + label: "{{ item.item.file }}" diff --git a/ansible/roles/app/tasks/services/set_paperless.yaml b/ansible/roles/app/tasks/services/set_paperless.yaml index 2fcd20d..7e07eff 100644 --- a/ansible/roles/app/tasks/services/set_paperless.yaml +++ b/ansible/roles/app/tasks/services/set_paperless.yaml @@ -122,3 +122,36 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/{{ item.file }}.tar" + loop: + - image: "docker.io/library/redis:{{ version['containers']['redis'] }}" + file: "docker.io_library_redis_{{ version['containers']['redis'] }}" + - image: "ghcr.io/paperless-ngx/paperless-ngx:{{ version['containers']['paperless'] }}" + file: "ghcr.io_paperless-ngx_paperless-ngx_{{ version['containers']['paperless'] }}" + loop_control: + label: "{{ item.file }}" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "{{ item.item.image }}" + dest: "{{ node['home_path'] }}/archives/containers/{{ item.item.file }}.tar" + format: "oci-archive" + force: false + loop: "{{ container_archive_images.results }}" + loop_control: + label: "{{ item.item.file }}" + when: not item.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/{{ item.item.file }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true + loop: "{{ container_archive_images.results }}" + loop_control: + label: "{{ item.item.file }}" diff --git a/ansible/roles/app/tasks/services/set_sure.yaml b/ansible/roles/app/tasks/services/set_sure.yaml index 2b074d7..0558738 100644 --- a/ansible/roles/app/tasks/services/set_sure.yaml +++ b/ansible/roles/app/tasks/services/set_sure.yaml @@ -108,3 +108,36 @@ loop: - "sure-web.service" - "sure-worker.service" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/{{ item.file }}.tar" + loop: + - image: "docker.io/library/redis:{{ version['containers']['redis'] }}" + file: "docker.io_library_redis_{{ version['containers']['redis'] }}" + - image: "ghcr.io/we-promise/sure:{{ version['containers']['sure'] }}" + file: "ghcr.io_we-promise_sure_{{ version['containers']['sure'] }}" + loop_control: + label: "{{ item.file }}" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "{{ item.item.image }}" + dest: "{{ node['home_path'] }}/archives/containers/{{ item.item.file }}.tar" + format: "oci-archive" + force: false + loop: "{{ container_archive_images.results }}" + loop_control: + label: "{{ item.item.file }}" + when: not item.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/{{ item.item.file }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true + loop: "{{ container_archive_images.results }}" + loop_control: + label: "{{ item.item.file }}" diff --git a/ansible/roles/app/tasks/services/set_vaultwarden.yaml b/ansible/roles/app/tasks/services/set_vaultwarden.yaml index 392bb9c..d5e4201 100644 --- a/ansible/roles/app/tasks/services/set_vaultwarden.yaml +++ b/ansible/roles/app/tasks/services/set_vaultwarden.yaml @@ -55,3 +55,23 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/docker.io_vaultwarden_server_{{ version['containers']['vaultwarden'] }}.tar" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "docker.io/vaultwarden/server:{{ version['containers']['vaultwarden'] }}" + dest: "{{ node['home_path'] }}/archives/containers/docker.io_vaultwarden_server_{{ version['containers']['vaultwarden'] }}.tar" + format: "oci-archive" + force: false + when: not container_archive_images.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/docker.io_vaultwarden_server_{{ version['containers']['vaultwarden'] }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true diff --git a/ansible/roles/auth/tasks/services/set_authelia.yaml b/ansible/roles/auth/tasks/services/set_authelia.yaml index 43b428f..e38b1e2 100644 --- a/ansible/roles/auth/tasks/services/set_authelia.yaml +++ b/ansible/roles/auth/tasks/services/set_authelia.yaml @@ -76,3 +76,23 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/docker.io_authelia_authelia_{{ version['containers']['authelia'] }}.tar" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "docker.io/authelia/authelia:{{ version['containers']['authelia'] }}" + dest: "{{ node['home_path'] }}/archives/containers/docker.io_authelia_authelia_{{ version['containers']['authelia'] }}.tar" + format: "oci-archive" + force: false + when: not container_archive_images.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/docker.io_authelia_authelia_{{ version['containers']['authelia'] }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true diff --git a/ansible/roles/common/tasks/services/set_caddy.yaml b/ansible/roles/common/tasks/services/set_caddy.yaml index e182af0..378b2d1 100644 --- a/ansible/roles/common/tasks/services/set_caddy.yaml +++ b/ansible/roles/common/tasks/services/set_caddy.yaml @@ -97,3 +97,23 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/ilnmors.internal_{{ node['name'] }}_caddy_{{ version['containers']['caddy'] }}.tar" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "ilnmors.internal/{{ node['name'] }}/caddy:{{ version['containers']['caddy'] }}" + dest: "{{ node['home_path'] }}/archives/containers/ilnmors.internal_{{ node['name'] }}_caddy_{{ version['containers']['caddy'] }}.tar" + format: "oci-archive" + force: false + when: not container_archive_images.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/ilnmors.internal_{{ node['name'] }}_caddy_{{ version['containers']['caddy'] }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true diff --git a/ansible/roles/common/tasks/services/set_podman.yaml b/ansible/roles/common/tasks/services/set_podman.yaml index 5dc1dc0..1fedb3e 100644 --- a/ansible/roles/common/tasks/services/set_podman.yaml +++ b/ansible/roles/common/tasks/services/set_podman.yaml @@ -24,6 +24,17 @@ mode: "0770" when: node['name'] == "app" +- name: Create container image archive directory + ansible.builtin.file: + path: "{{ item }}" + owner: "{{ ansible_user }}" + group: "svadmins" + state: "directory" + mode: "0700" + loop: + - "{{ node['home_path'] }}/archives" + - "{{ node['home_path'] }}/archives/containers" + - name: Install podman and reset ssh connection for initiating when: is_podman_installed.rc != 0 become: true diff --git a/ansible/roles/infra/tasks/services/set_ca_server.yaml b/ansible/roles/infra/tasks/services/set_ca_server.yaml index 6e20880..e4c7dc1 100644 --- a/ansible/roles/infra/tasks/services/set_ca_server.yaml +++ b/ansible/roles/infra/tasks/services/set_ca_server.yaml @@ -78,3 +78,23 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/docker.io_smallstep_step-ca_{{ version['containers']['step'] }}.tar" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "docker.io/smallstep/step-ca:{{ version['containers']['step'] }}" + dest: "{{ node['home_path'] }}/archives/containers/docker.io_smallstep_step-ca_{{ version['containers']['step'] }}.tar" + format: "oci-archive" + force: false + when: not container_archive_images.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/docker.io_smallstep_step-ca_{{ version['containers']['step'] }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true diff --git a/ansible/roles/infra/tasks/services/set_grafana.yaml b/ansible/roles/infra/tasks/services/set_grafana.yaml index c833451..123e25e 100644 --- a/ansible/roles/infra/tasks/services/set_grafana.yaml +++ b/ansible/roles/infra/tasks/services/set_grafana.yaml @@ -83,3 +83,23 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/docker.io_grafana_grafana_{{ version['containers']['grafana'] }}.tar" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "docker.io/grafana/grafana:{{ version['containers']['grafana'] }}" + dest: "{{ node['home_path'] }}/archives/containers/docker.io_grafana_grafana_{{ version['containers']['grafana'] }}.tar" + format: "oci-archive" + force: false + when: not container_archive_images.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/docker.io_grafana_grafana_{{ version['containers']['grafana'] }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true diff --git a/ansible/roles/infra/tasks/services/set_ldap.yaml b/ansible/roles/infra/tasks/services/set_ldap.yaml index 1770b77..1cecbe8 100644 --- a/ansible/roles/infra/tasks/services/set_ldap.yaml +++ b/ansible/roles/infra/tasks/services/set_ldap.yaml @@ -108,3 +108,23 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/docker.io_lldap_lldap_{{ version['containers']['ldap'] }}.tar" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "docker.io/lldap/lldap:{{ version['containers']['ldap'] }}" + dest: "{{ node['home_path'] }}/archives/containers/docker.io_lldap_lldap_{{ version['containers']['ldap'] }}.tar" + format: "oci-archive" + force: false + when: not container_archive_images.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/docker.io_lldap_lldap_{{ version['containers']['ldap'] }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true diff --git a/ansible/roles/infra/tasks/services/set_loki.yaml b/ansible/roles/infra/tasks/services/set_loki.yaml index 8ba8346..5d9b7ba 100644 --- a/ansible/roles/infra/tasks/services/set_loki.yaml +++ b/ansible/roles/infra/tasks/services/set_loki.yaml @@ -64,3 +64,23 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/docker.io_grafana_loki_{{ version['containers']['loki'] }}.tar" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "docker.io/grafana/loki:{{ version['containers']['loki'] }}" + dest: "{{ node['home_path'] }}/archives/containers/docker.io_grafana_loki_{{ version['containers']['loki'] }}.tar" + format: "oci-archive" + force: false + when: not container_archive_images.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/docker.io_grafana_loki_{{ version['containers']['loki'] }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true diff --git a/ansible/roles/infra/tasks/services/set_postgresql.yaml b/ansible/roles/infra/tasks/services/set_postgresql.yaml index 35077d1..8f59450 100644 --- a/ansible/roles/infra/tasks/services/set_postgresql.yaml +++ b/ansible/roles/infra/tasks/services/set_postgresql.yaml @@ -172,3 +172,26 @@ daemon_reload: true scope: "user" loop: "{{ connected_services }}" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/\ + ilnmors.internal_{{ node['name'] }}_postgres_pg{{ version['containers']['postgresql'] }}-vectorchord{{ version['containers']['vectorchord'] }}.tar" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "ilnmors.internal/{{ node['name'] }}/postgres:pg{{ version['containers']['postgresql'] }}-vectorchord{{ version['containers']['vectorchord'] }}" + dest: "{{ node['home_path'] }}/archives/containers/\ + ilnmors.internal_{{ node['name'] }}_postgres_pg{{ version['containers']['postgresql'] }}-vectorchord{{ version['containers']['vectorchord'] }}.tar" + format: "oci-archive" + force: false + when: not container_archive_images.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/\ + ilnmors.internal_{{ node['name'] }}_postgres_pg{{ version['containers']['postgresql'] }}-vectorchord{{ version['containers']['vectorchord'] }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true diff --git a/ansible/roles/infra/tasks/services/set_prometheus.yaml b/ansible/roles/infra/tasks/services/set_prometheus.yaml index 67b03bf..1538add 100644 --- a/ansible/roles/infra/tasks/services/set_prometheus.yaml +++ b/ansible/roles/infra/tasks/services/set_prometheus.yaml @@ -68,3 +68,23 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/docker.io_prom_prometheus_{{ version['containers']['prometheus'] }}.tar" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "docker.io/prom/prometheus:{{ version['containers']['prometheus'] }}" + dest: "{{ node['home_path'] }}/archives/containers/docker.io_prom_prometheus_{{ version['containers']['prometheus'] }}.tar" + format: "oci-archive" + force: false + when: not container_archive_images.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/docker.io_prom_prometheus_{{ version['containers']['prometheus'] }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true diff --git a/ansible/roles/infra/tasks/services/set_x509-exporter.yaml b/ansible/roles/infra/tasks/services/set_x509-exporter.yaml index e7a7f95..6bd9aec 100644 --- a/ansible/roles/infra/tasks/services/set_x509-exporter.yaml +++ b/ansible/roles/infra/tasks/services/set_x509-exporter.yaml @@ -68,3 +68,23 @@ enabled: true daemon_reload: true scope: "user" + +- name: Check container archive images + ansible.builtin.stat: + path: "{{ node['home_path'] }}/archives/containers/docker.io_enix_x509-certificate-exporter_{{ version['containers']['x509-exporter'] }}.tar" + register: container_archive_images + +- name: Save container archive images + containers.podman.podman_save: + image: + - "docker.io/enix/x509-certificate-exporter:{{ version['containers']['x509-exporter'] }}" + dest: "{{ node['home_path'] }}/archives/containers/docker.io_enix_x509-certificate-exporter_{{ version['containers']['x509-exporter'] }}.tar" + format: "oci-archive" + force: false + when: not container_archive_images.stat.exists + +- name: Fetch container archive images + ansible.builtin.fetch: + src: "{{ node['home_path'] }}/archives/containers/docker.io_enix_x509-certificate-exporter_{{ version['containers']['x509-exporter'] }}.tar" + dest: "{{ hostvars['console']['node']['data_path'] }}/images/containers/" + flat: true diff --git a/data/images/containers/.gitkeep b/data/images/containers/.gitkeep new file mode 100644 index 0000000..e69de29