diff --git a/roles/dev_images/tasks/build_image.yml b/roles/dev_images/tasks/build_image.yml index e33f4289b586c1d4d91ab2a6c8a6f0fd6bc10aa1..8a264404db6dca020f7faa6b97676976e2fa0128 100644 --- a/roles/dev_images/tasks/build_image.yml +++ b/roles/dev_images/tasks/build_image.yml @@ -3,20 +3,18 @@ name: "{{ image.image_name }}:{{ image.image_tag }}" register: image_exists -- name: Stop if image exists - ansible.builtin.meta: end_play - when: image_exists.images | length > 0 - -- name: Get VM image - amazon.aws.aws_s3: - aws_access_key: "{{ s3.access_key }}" - aws_secret_key: "{{ s3.secret_key }}" - region: "{{ s3.region }}" - bucket: "{{ s3.bucket }}" - object: "{{ image.vm_image }}" - dest: "$HOME/vrnetlab/{{ image.integration }}/{{ image.vm_image }}" - mode: get - -- name: Build/install the docker image - community.general.make: - chdir: "$HOME/vrnetlab/{{ image.integration }}" +- name: Build image if necessary + when: image_exists.images | length == 0 + block: + - name: Get VM image + amazon.aws.aws_s3: + aws_access_key: "{{ s3.access_key }}" + aws_secret_key: "{{ s3.secret_key }}" + region: "{{ s3.region }}" + bucket: "{{ s3.bucket }}" + object: "{{ image.vm_image }}" + dest: "$HOME/vrnetlab/{{ image.integration }}/{{ image.vm_image }}" + mode: get + - name: Build/install the docker image + community.general.make: + chdir: "$HOME/vrnetlab/{{ image.integration }}" diff --git a/roles/dev_images/tasks/import_image.yml b/roles/dev_images/tasks/import_image.yml index 8144ec18d9105166855bcea98bf8ee6f7b976b7e..968648b0ebc490a9bc642e6fcc64cc16ee3ef3af 100644 --- a/roles/dev_images/tasks/import_image.yml +++ b/roles/dev_images/tasks/import_image.yml @@ -3,40 +3,23 @@ name: "{{ image.image_name }}:{{ image.image_tag }}" register: image_exists -- name: Stop if image exists - ansible.builtin.meta: end_play - when: image_exists.images | length > 0 - -- name: Get VM images - amazon.aws.aws_s3: - aws_access_key: "{{ s3.access_key }}" - aws_secret_key: "{{ s3.secret_key }}" - region: "{{ s3.region }}" - bucket: "{{ s3.bucket }}" - object: "{{ image.filename }}" - dest: "/tmp/{{ image.filename }}" - mode: get - -# - name: Add docker images -# community.docker.docker_image: -# docker_host: "unix:/run/docker.sock" -# name: "{{ item.image_name }}" -# tag: "{{ item.image_tag }}" -# load_path: "/tmp/{{ item.filename }}" -# source: load -# state: present -# loop: -# - filename: cEOS-lab-4.28.2.1F.tar -# image_name: ceos -# image_tag: 4.28.1.1F - - -- name: Add docker images - # community.docker.docker_image doesn't work in this case - ansible.builtin.shell: - cmd: "docker image import /tmp/{{ image.filename }} {{ image.image_name }}:{{ image.image_tag }}" - -- name: Remove downloaded file - ansible.builtin.file: - path: "/tmp/{{ image.filename }}" - state: absent +- name: Add docker image if necessary + when: image_exists.images | length == 0 + block: + - name: Get VM images + amazon.aws.aws_s3: + aws_access_key: "{{ s3.access_key }}" + aws_secret_key: "{{ s3.secret_key }}" + region: "{{ s3.region }}" + bucket: "{{ s3.bucket }}" + object: "{{ image.filename }}" + dest: "/tmp/{{ image.filename }}" + mode: get + - name: Add docker images + # community.docker.docker_image doesn't work in this case + ansible.builtin.shell: + cmd: "docker image import /tmp/{{ image.filename }} {{ image.image_name }}:{{ image.image_tag }}" + - name: Remove downloaded file + ansible.builtin.file: + path: "/tmp/{{ image.filename }}" + state: absent diff --git a/roles/dev_images/tasks/main.yml b/roles/dev_images/tasks/main.yml index d878dba823f807077bfba5ac2f164f1819509549..5d1180ef47c051a77ff12a614d2aca862c0c4b53 100644 --- a/roles/dev_images/tasks/main.yml +++ b/roles/dev_images/tasks/main.yml @@ -10,11 +10,11 @@ version: v0.8.1 dest: $HOME/vrnetlab -# - name: Build vrnetlab images -# ansible.builtin.include_tasks: build_image.yml -# loop: "{{ vrnetlab_images }}" -# loop_control: -# loop_var: image +- name: Build vrnetlab images + ansible.builtin.include_tasks: build_image.yml + loop: "{{ vrnetlab_images }}" + loop_control: + loop_var: image - name: Import normal images ansible.builtin.include_tasks: import_image.yml