--- - name: Image build when: dockerfile_needed block: - name: Set docker_build_directory variable set_fact: docker_build_directory: /opt/{{ docker_namespace }}/build - name: Create container build directory file: path: "{{ docker_build_directory }}" state: directory - name: Put dockerfile in place template: src: Dockerfile.j2 dest: "{{ docker_build_directory }}/Dockerfile" mode: 0644 - name: Build docker image for {{ docker_service }} docker_image: name: "local_{{ docker_service }}" source: build force_source: true build: pull: true path: "{{ docker_build_directory }}" register: built_image changed_when: - not ansible_check_mode - built_image.changed - name: Pull container image for {{ docker_service_name }} docker_image: name: "{{ docker_image }}" source: pull force_source: true register: pulled_image when: not dockerfile_needed changed_when: - not ansible_check_mode - pulled_image.changed - name: Set container_image variable set_fact: container_image: "{{ item.image }}" when: item.skipped is not defined or not item.skipped loop: - "{{ built_image }}" - "{{ pulled_image }}" - name: Check mode image info when: ansible_check_mode block: - name: Get docker image info for check mode docker_image_info: name: "{{ ('local_' + docker_service) if dockerfile | length > 0 else docker_image }}" register: existing_image - name: Set check mode container_image variable set_fact: container_image: "{{ existing_image.images[0] }}" when: existing_image.images | length > 0 - name: Set image user variable set_fact: image_user: "{{ container_image.Config.User }}" when: - not ansible_check_mode - container_image.Config.User | int