diff --git a/installer/local_docker/tasks/compose.yml b/installer/local_docker/tasks/compose.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/installer/local_docker/tasks/main.yml b/installer/local_docker/tasks/main.yml index 35c4cb4b14..7022bd5995 100644 --- a/installer/local_docker/tasks/main.yml +++ b/installer/local_docker/tasks/main.yml @@ -1,221 +1,7 @@ ---- -- name: Manage AWX Container Images - block: - - name: Export Docker web image if it isnt local and there isnt a registry defined - docker_image: - name: "{{ awx_web_image }}" - tag: "{{ awx_version }}" - archive_path: "{{ awx_local_base_config_path|default('/tmp') }}/{{ awx_web_image }}_{{ awx_version }}.tar" - when: inventory_hostname != "localhost" and docker_registry is not defined - delegate_to: localhost +- import_tasks: set_image.yml - - name: Export Docker task image if it isnt local and there isnt a registry defined - docker_image: - name: "{{ awx_task_image }}" - tag: "{{ awx_version }}" - archive_path: "{{ awx_local_base_config_path|default('/tmp') }}/{{ awx_task_image }}_{{ awx_version }}.tar" - when: inventory_hostname != "localhost" and docker_registry is not defined - delegate_to: localhost +- import_tasks: standalone.yml + when: not (use_docker_compose | default(False) | bool) - - name: Authenticate with Docker registry if registry password given - docker_login: - registry: "{{ docker_registry }}" - username: "{{ docker_registry_username }}" - password: "{{ docker_registry_password }}" - reauthorize: yes - when: docker_registry is defined and docker_registry_password is defined - delegate_to: localhost - - - name: Set docker base path - set_fact: - docker_deploy_base_path: "{{ awx_base_path|default('/tmp') }}/docker_deploy" - when: ansible_connection != "local" and docker_registry is not defined - - - name: Ensure directory exists - file: - path: "{{ docker_deploy_base_path }}" - state: directory - when: ansible_connection != "local" and docker_registry is not defined - - - name: Copy web image to docker execution - copy: - src: "{{ awx_local_base_config_path|default('/tmp') }}/{{ awx_web_image }}_{{ awx_version }}.tar" - dest: "{{ docker_deploy_base_path }}/{{ awx_web_image }}_{{ awx_version }}.tar" - when: ansible_connection != "local" and docker_registry is not defined - - - name: Copy task image to docker execution - copy: - src: "{{ awx_local_base_config_path|default('/tmp') }}/{{ awx_task_image }}_{{ awx_version }}.tar" - dest: "{{ docker_deploy_base_path }}" - when: ansible_connection != "local" and docker_registry is not defined - - - name: Load web image - docker_image: - name: "{{ awx_web_image }}" - tag: "{{ awx_version }}" - load_path: "{{ docker_deploy_base_path }}/{{ awx_web_image }}_{{ awx_version }}.tar" - timeout: 300 - when: ansible_connection != "local" and docker_registry is not defined - - - name: Load task image - docker_image: - name: "{{ awx_task_image }}" - tag: "{{ awx_version }}" - load_path: "{{ docker_deploy_base_path }}/{{ awx_task_image }}_{{ awx_version }}.tar" - timeout: 300 - when: ansible_connection != "local" and docker_registry is not 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: - awx_web_docker_actual_image: "{{ awx_web_image }}:{{ awx_version }}" - awx_task_docker_actual_image: "{{ awx_task_image }}:{{ awx_version }}" - when: docker_registry is not defined - when: dockerhub_base is not defined - -- name: Set DockerHub Image Paths - set_fact: - awx_web_docker_actual_image: "{{ dockerhub_base }}/awx_web:{{ dockerhub_version }}" - awx_task_docker_actual_image: "{{ dockerhub_base }}/awx_task:{{ dockerhub_version }}" - when: dockerhub_base is defined - -- name: Activate postgres container - docker_container: - name: postgres - state: started - restart_policy: unless-stopped - image: postgres:9.6 - volumes: - - "{{ postgres_data_dir }}:/var/lib/postgresql/data:Z" - env: - POSTGRES_USER: "{{ pg_username }}" - POSTGRES_PASSWORD: "{{ pg_password }}" - POSTGRES_DB: "{{ pg_database }}" - PGDATA: "/var/lib/postgresql/data/pgdata" - when: pg_hostname is not defined or pg_hostname == '' - register: postgres_container_activate - -- name: Activate rabbitmq container - docker_container: - name: rabbitmq - state: started - restart_policy: unless-stopped - image: rabbitmq:3 - env: - RABBITMQ_DEFAULT_VHOST: "awx" - register: rabbitmq_container_activate - -- name: Activate memcached container - docker_container: - name: memcached - state: started - restart_policy: unless-stopped - image: memcached:alpine - -- name: Wait for postgres and rabbitmq to activate - pause: - seconds: 15 - when: postgres_container_activate.changed or rabbitmq_container_activate.changed - -- name: Set properties without postgres for awx_web - set_fact: - pg_hostname_actual: "{{ pg_hostname }}" - awx_web_container_links: - - rabbitmq - - memcached - when: pg_hostname is defined - -- name: Set properties with postgres for awx_web - set_fact: - pg_hostname_actual: postgres - awx_web_container_links: - - rabbitmq - - memcached - - postgres - when: pg_hostname is not defined or pg_hostname == '' - -- name: Set properties without postgres for awx_task - set_fact: - pg_hostname_actual: "{{ pg_hostname }}" - awx_task_container_links: - - rabbitmq - - memcached - - awx_web:awxweb - when: pg_hostname is defined - -- name: Set properties with postgres for awx_task - set_fact: - pg_hostname_actual: postgres - awx_task_container_links: - - rabbitmq - - memcached - - awx_web:awxweb - - postgres - when: pg_hostname is not defined or pg_hostname == '' - -- name: Activate AWX Web Container - docker_container: - name: awx_web - state: started - restart_policy: unless-stopped - image: "{{ awx_web_docker_actual_image }}" - user: root - ports: - - "{{ host_port }}:8052" - links: "{{ awx_web_container_links|list }}" - hostname: awxweb - dns_search_domains: "{{ awx_container_search_domains.split(',') if awx_container_search_domains is defined else omit }}" - dns_servers: "{{ awx_alternate_dns_servers.split(',') if awx_alternate_dns_servers is defined else omit }}" - env: - http_proxy: "{{ http_proxy | default('') }}" - https_proxy: "{{ https_proxy | default('') }}" - no_proxy: "{{ no_proxy | default('') }}" - SECRET_KEY: "{{ awx_secret_key }}" - DATABASE_NAME: "{{ pg_database }}" - DATABASE_USER: "{{ pg_username }}" - DATABASE_PASSWORD: "{{ pg_password }}" - DATABASE_PORT: "{{ pg_port }}" - DATABASE_HOST: "{{ pg_hostname_actual }}" - RABBITMQ_USER: "guest" - RABBITMQ_PASSWORD: "guest" - RABBITMQ_HOST: "rabbitmq" - RABBITMQ_PORT: "5672" - RABBITMQ_VHOST: "awx" - MEMCACHED_HOST: "memcached" - MEMCACHED_PORT: "11211" - AWX_ADMIN_USER: "{{ default_admin_user|default('admin') }}" - AWX_ADMIN_PASSWORD: "{{ default_admin_password|default('password') }}" - -- name: Activate AWX Task Container - docker_container: - name: awx_task - state: started - restart_policy: unless-stopped - image: "{{ awx_task_docker_actual_image }}" - links: "{{ awx_task_container_links|list }}" - user: root - hostname: awx - dns_search_domains: "{{ awx_container_search_domains.split(',') if awx_container_search_domains is defined else omit }}" - dns_servers: "{{ awx_alternate_dns_servers.split(',') if awx_alternate_dns_servers is defined else omit }}" - env: - http_proxy: "{{ http_proxy | default('') }}" - https_proxy: "{{ https_proxy | default('') }}" - no_proxy: "{{ no_proxy | default('') }}" - SECRET_KEY: "{{ awx_secret_key }}" - DATABASE_NAME: "{{ pg_database }}" - DATABASE_USER: "{{ pg_username }}" - DATABASE_PASSWORD: "{{ pg_password }}" - DATABASE_HOST: "{{ pg_hostname_actual }}" - DATABASE_PORT: "{{ pg_port }}" - RABBITMQ_USER: "guest" - RABBITMQ_PASSWORD: "guest" - RABBITMQ_HOST: "rabbitmq" - RABBITMQ_PORT: "5672" - RABBITMQ_VHOST: "awx" - MEMCACHED_HOST: "memcached" - MEMCACHED_PORT: "11211" - AWX_ADMIN_USER: "{{ default_admin_user|default('admin') }}" - AWX_ADMIN_PASSWORD: "{{ default_admin_password|default('password') }}" +- import_tasks: compose.yml + when: use_docker_compose | default(False) | bool diff --git a/installer/local_docker/tasks/set_image.yml b/installer/local_docker/tasks/set_image.yml new file mode 100644 index 0000000000..ac1bc7a079 --- /dev/null +++ b/installer/local_docker/tasks/set_image.yml @@ -0,0 +1,83 @@ +--- +- name: Manage AWX Container Images + block: + - name: Export Docker web image if it isnt local and there isnt a registry defined + docker_image: + name: "{{ awx_web_image }}" + tag: "{{ awx_version }}" + archive_path: "{{ awx_local_base_config_path|default('/tmp') }}/{{ awx_web_image }}_{{ awx_version }}.tar" + when: inventory_hostname != "localhost" and docker_registry is not defined + delegate_to: localhost + + - name: Export Docker task image if it isnt local and there isnt a registry defined + docker_image: + name: "{{ awx_task_image }}" + tag: "{{ awx_version }}" + archive_path: "{{ awx_local_base_config_path|default('/tmp') }}/{{ awx_task_image }}_{{ awx_version }}.tar" + when: inventory_hostname != "localhost" and docker_registry is not defined + delegate_to: localhost + + - name: Authenticate with Docker registry if registry password given + docker_login: + registry: "{{ docker_registry }}" + username: "{{ docker_registry_username }}" + password: "{{ docker_registry_password }}" + reauthorize: yes + when: docker_registry is defined and docker_registry_password is defined + delegate_to: localhost + + - name: Set docker base path + set_fact: + docker_deploy_base_path: "{{ awx_base_path|default('/tmp') }}/docker_deploy" + when: ansible_connection != "local" and docker_registry is not defined + + - name: Ensure directory exists + file: + path: "{{ docker_deploy_base_path }}" + state: directory + when: ansible_connection != "local" and docker_registry is not defined + + - name: Copy web image to docker execution + copy: + src: "{{ awx_local_base_config_path|default('/tmp') }}/{{ awx_web_image }}_{{ awx_version }}.tar" + dest: "{{ docker_deploy_base_path }}/{{ awx_web_image }}_{{ awx_version }}.tar" + when: ansible_connection != "local" and docker_registry is not defined + + - name: Copy task image to docker execution + copy: + src: "{{ awx_local_base_config_path|default('/tmp') }}/{{ awx_task_image }}_{{ awx_version }}.tar" + dest: "{{ docker_deploy_base_path }}" + when: ansible_connection != "local" and docker_registry is not defined + + - name: Load web image + docker_image: + name: "{{ awx_web_image }}" + tag: "{{ awx_version }}" + load_path: "{{ docker_deploy_base_path }}/{{ awx_web_image }}_{{ awx_version }}.tar" + timeout: 300 + when: ansible_connection != "local" and docker_registry is not defined + + - name: Load task image + docker_image: + name: "{{ awx_task_image }}" + tag: "{{ awx_version }}" + load_path: "{{ docker_deploy_base_path }}/{{ awx_task_image }}_{{ awx_version }}.tar" + timeout: 300 + when: ansible_connection != "local" and docker_registry is not 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: + awx_web_docker_actual_image: "{{ awx_web_image }}:{{ awx_version }}" + awx_task_docker_actual_image: "{{ awx_task_image }}:{{ awx_version }}" + when: docker_registry is not defined + when: dockerhub_base is not defined + +- name: Set DockerHub Image Paths + set_fact: + awx_web_docker_actual_image: "{{ dockerhub_base }}/awx_web:{{ dockerhub_version }}" + awx_task_docker_actual_image: "{{ dockerhub_base }}/awx_task:{{ dockerhub_version }}" + when: dockerhub_base is defined diff --git a/installer/local_docker/tasks/standalone.yml b/installer/local_docker/tasks/standalone.yml new file mode 100644 index 0000000000..f6a51f71d1 --- /dev/null +++ b/installer/local_docker/tasks/standalone.yml @@ -0,0 +1,138 @@ +--- +- name: Activate postgres container + docker_container: + name: postgres + state: started + restart_policy: unless-stopped + image: postgres:9.6 + volumes: + - "{{ postgres_data_dir }}:/var/lib/postgresql/data:Z" + env: + POSTGRES_USER: "{{ pg_username }}" + POSTGRES_PASSWORD: "{{ pg_password }}" + POSTGRES_DB: "{{ pg_database }}" + PGDATA: "/var/lib/postgresql/data/pgdata" + when: pg_hostname is not defined or pg_hostname == '' + register: postgres_container_activate + +- name: Activate rabbitmq container + docker_container: + name: rabbitmq + state: started + restart_policy: unless-stopped + image: rabbitmq:3 + env: + RABBITMQ_DEFAULT_VHOST: "awx" + register: rabbitmq_container_activate + +- name: Activate memcached container + docker_container: + name: memcached + state: started + restart_policy: unless-stopped + image: memcached:alpine + +- name: Wait for postgres and rabbitmq to activate + pause: + seconds: 15 + when: postgres_container_activate.changed or rabbitmq_container_activate.changed + +- name: Set properties without postgres for awx_web + set_fact: + pg_hostname_actual: "{{ pg_hostname }}" + awx_web_container_links: + - rabbitmq + - memcached + when: pg_hostname is defined + +- name: Set properties with postgres for awx_web + set_fact: + pg_hostname_actual: postgres + awx_web_container_links: + - rabbitmq + - memcached + - postgres + when: pg_hostname is not defined or pg_hostname == '' + +- name: Set properties without postgres for awx_task + set_fact: + pg_hostname_actual: "{{ pg_hostname }}" + awx_task_container_links: + - rabbitmq + - memcached + - awx_web:awxweb + when: pg_hostname is defined + +- name: Set properties with postgres for awx_task + set_fact: + pg_hostname_actual: postgres + awx_task_container_links: + - rabbitmq + - memcached + - awx_web:awxweb + - postgres + when: pg_hostname is not defined or pg_hostname == '' + +- name: Activate AWX Web Container + docker_container: + name: awx_web + state: started + restart_policy: unless-stopped + image: "{{ awx_web_docker_actual_image }}" + user: root + ports: + - "{{ host_port }}:8052" + links: "{{ awx_web_container_links|list }}" + hostname: awxweb + dns_search_domains: "{{ awx_container_search_domains.split(',') if awx_container_search_domains is defined else omit }}" + dns_servers: "{{ awx_alternate_dns_servers.split(',') if awx_alternate_dns_servers is defined else omit }}" + env: + http_proxy: "{{ http_proxy | default('') }}" + https_proxy: "{{ https_proxy | default('') }}" + no_proxy: "{{ no_proxy | default('') }}" + SECRET_KEY: "{{ awx_secret_key }}" + DATABASE_NAME: "{{ pg_database }}" + DATABASE_USER: "{{ pg_username }}" + DATABASE_PASSWORD: "{{ pg_password }}" + DATABASE_PORT: "{{ pg_port }}" + DATABASE_HOST: "{{ pg_hostname_actual }}" + RABBITMQ_USER: "guest" + RABBITMQ_PASSWORD: "guest" + RABBITMQ_HOST: "rabbitmq" + RABBITMQ_PORT: "5672" + RABBITMQ_VHOST: "awx" + MEMCACHED_HOST: "memcached" + MEMCACHED_PORT: "11211" + AWX_ADMIN_USER: "{{ default_admin_user|default('admin') }}" + AWX_ADMIN_PASSWORD: "{{ default_admin_password|default('password') }}" + +- name: Activate AWX Task Container + docker_container: + name: awx_task + state: started + restart_policy: unless-stopped + image: "{{ awx_task_docker_actual_image }}" + links: "{{ awx_task_container_links|list }}" + user: root + hostname: awx + dns_search_domains: "{{ awx_container_search_domains.split(',') if awx_container_search_domains is defined else omit }}" + dns_servers: "{{ awx_alternate_dns_servers.split(',') if awx_alternate_dns_servers is defined else omit }}" + env: + http_proxy: "{{ http_proxy | default('') }}" + https_proxy: "{{ https_proxy | default('') }}" + no_proxy: "{{ no_proxy | default('') }}" + SECRET_KEY: "{{ awx_secret_key }}" + DATABASE_NAME: "{{ pg_database }}" + DATABASE_USER: "{{ pg_username }}" + DATABASE_PASSWORD: "{{ pg_password }}" + DATABASE_HOST: "{{ pg_hostname_actual }}" + DATABASE_PORT: "{{ pg_port }}" + RABBITMQ_USER: "guest" + RABBITMQ_PASSWORD: "guest" + RABBITMQ_HOST: "rabbitmq" + RABBITMQ_PORT: "5672" + RABBITMQ_VHOST: "awx" + MEMCACHED_HOST: "memcached" + MEMCACHED_PORT: "11211" + AWX_ADMIN_USER: "{{ default_admin_user|default('admin') }}" + AWX_ADMIN_PASSWORD: "{{ default_admin_password|default('password') }}"