72 lines
1.9 KiB
YAML
72 lines
1.9 KiB
YAML
---
|
|
|
|
- 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 != 0
|