diff --git a/INSTALL.md b/INSTALL.md index e16c4f3bc3..10ae5a0ac0 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -330,6 +330,10 @@ If you wish to tag and push built images to a Docker registry, set the following > Username of the user that will push images to the registry. Defaults to *developer*. +*docker_remove_local_images* + +> Due to the way that the docker_image module behaves, images will not be pushed to a remote repository if they are present locally. Set this to delete local versions of the images that will be pushed to the remote. This will fail if containers are currently running from those images. + **Note** > These settings are ignored if using official images diff --git a/installer/build.yml b/installer/build.yml index da8f03c0bb..00dc6424ef 100644 --- a/installer/build.yml +++ b/installer/build.yml @@ -4,3 +4,4 @@ gather_facts: false roles: - { role: image_build } + - { role: image_push, when: "docker_registry is defined" } diff --git a/installer/image_push/tasks/main.yml b/installer/image_push/tasks/main.yml new file mode 100644 index 0000000000..111f7e0cd2 --- /dev/null +++ b/installer/image_push/tasks/main.yml @@ -0,0 +1,40 @@ +--- +- name: Remove local images to ensure proper push behavior + block: + - name: Remove web image + docker_image: + name: "{{ docker_registry }}/{{ docker_registry_repository }}/{{ awx_web_image }}" + tag: "{{ awx_version }}" + state: absent + + - name: Remove task image + docker_image: + name: "{{ docker_registry }}/{{ docker_registry_repository }}/{{ awx_task_image }}" + tag: "{{ awx_version }}" + state: absent + delegate_to: localhost + when: docker_remove_local_images + +- name: Tag and Push Container Images + block: + - name: Tag and push web image to registry + docker_image: + name: "{{ awx_web_image }}" + repository: "{{ docker_registry }}/{{ docker_registry_repository }}/{{ awx_web_image }}" + tag: "{{ awx_version }}" + push: yes + + - name: Tag and push task image to registry + docker_image: + name: "{{ awx_task_image }}" + repository: "{{ docker_registry }}/{{ docker_registry_repository }}/{{ awx_task_image }}" + tag: "{{ awx_version }}" + push: yes + delegate_to: localhost + +- name: Set full image path for Registry + set_fact: + awx_web_docker_actual_image: >- + {{ docker_registry }}/{{ docker_registry_repository }}/{{ awx_web_image }}:{{ awx_version }} + awx_task_docker_actual_image: >- + {{ docker_registry }}/{{ docker_registry_repository }}/{{ awx_task_image }}:{{ awx_version }} diff --git a/installer/install.yml b/installer/install.yml index 01360e9ad3..d37d3af596 100644 --- a/installer/install.yml +++ b/installer/install.yml @@ -7,4 +7,3 @@ - { role: image_build, when: "dockerhub_base is not defined" } - { role: openshift, when: "openshift_host is defined" } - { role: local_docker, when: "openshift_host is not defined" } - diff --git a/installer/inventory b/installer/inventory index 1cccc1271a..3e2b987f7a 100644 --- a/installer/inventory +++ b/installer/inventory @@ -39,6 +39,11 @@ host_port=80 # docker_registry_repository=awx # docker_registry_username=developer + +# Docker_image will not attempt to push to remote if the image already exists locally +# Set this to true to delete images from docker on the build host so that they are pushed to the remote repository +docker_remove_local_images=False + # Set pg_hostname if you have an external postgres server, otherwise # a new postgres service will be created # pg_hostname=postgresql diff --git a/installer/local_docker/tasks/main.yml b/installer/local_docker/tasks/main.yml index b18b778516..4206b4c4f0 100644 --- a/installer/local_docker/tasks/main.yml +++ b/installer/local_docker/tasks/main.yml @@ -65,31 +65,9 @@ timeout: 300 when: ansible_connection != "local" and docker_registry is not defined - - name: Tag and push web image to registry - docker_image: - name: "{{ awx_web_image }}" - repository: "{{ docker_registry }}/{{ docker_registry_repository }}/{{ awx_web_image }}" - tag: "{{ awx_version }}" - push: yes - when: docker_registry is defined - delegate_to: localhost - - - name: Tag and push task image to registry - docker_image: - name: "{{ awx_task_image }}" - repository: "{{ docker_registry }}/{{ docker_registry_repository }}/{{ awx_task_image }}" - tag: "{{ awx_version }}" - push: yes - when: docker_registry is defined - delegate_to: localhost - - - name: Set full image path for Registry - set_fact: - awx_web_docker_actual_image: >- - {{ docker_registry }}/{{ docker_registry_repository }}/{{ awx_web_image }}:{{ awx_version }} - awx_task_docker_actual_image: >- - {{ docker_registry }}/{{ docker_registry_repository }}/{{ awx_task_image }}:{{ awx_version }} - when: docker_registry is defined + - include_role: + name: image_push + when: docker_registry is defined and dockerhub_base is not defined - name: Set full image path for local install set_fact: