mirror of
https://github.com/ansible/awx.git
synced 2024-11-01 08:21:15 +03:00
228 lines
5.7 KiB
YAML
228 lines
5.7 KiB
YAML
---
|
|
- name: Get Version from checkout if not provided
|
|
shell: "git describe --long --first-parent | sed 's/\\-g.*//' | sed 's/\\-/\\./'"
|
|
delegate_to: localhost
|
|
register: awx_version_command
|
|
when: awx_version is not defined
|
|
|
|
- name: Set global version if not provided
|
|
set_fact:
|
|
awx_version: "{{ awx_version_command.stdout }}"
|
|
when: awx_version is not defined
|
|
|
|
- name: Verify awx-logos directory exists for official install
|
|
stat:
|
|
path: "../../awx-logos"
|
|
delegate_to: localhost
|
|
register: logosdir
|
|
failed_when: logosdir.stat.isdir is not defined or not logosdir.stat.isdir
|
|
when: awx_official|default(false)|bool
|
|
|
|
- name: Copy logos for inclusion in sdist
|
|
copy:
|
|
src: "../../awx-logos/awx/ui/client/assets"
|
|
dest: "../awx/ui/client/"
|
|
delegate_to: localhost
|
|
when: awx_official|default(false)|bool
|
|
|
|
- name: Set sdist file name
|
|
set_fact:
|
|
awx_sdist_file: "awx-{{ awx_version }}.tar.gz"
|
|
|
|
- name: AWX Distribution
|
|
debug:
|
|
msg: "{{ awx_sdist_file }}"
|
|
|
|
- name: Stat distribution file
|
|
stat:
|
|
path: "../dist/{{ awx_sdist_file }}"
|
|
delegate_to: localhost
|
|
register: sdist
|
|
|
|
- name: Clean distribution
|
|
shell: make clean
|
|
args:
|
|
chdir: ..
|
|
ignore_errors: yes
|
|
when: not sdist.stat.exists
|
|
delegate_to: localhost
|
|
|
|
- name: Build sdist builder image
|
|
docker_image:
|
|
buildargs:
|
|
http_proxy: "{{ http_proxy | default('') }}"
|
|
https_proxy: "{{ https_proxy | default('') }}"
|
|
no_proxy: "{{ no_proxy | default('') }}"
|
|
path: "{{ role_path }}/files"
|
|
dockerfile: Dockerfile.sdist
|
|
name: awx_sdist_builder
|
|
tag: "{{ awx_version }}"
|
|
force: true
|
|
delegate_to: localhost
|
|
when: use_container_for_build|default(true)|bool
|
|
|
|
- name: Build AWX distribution using container
|
|
docker_container:
|
|
env:
|
|
http_proxy: "{{ http_proxy | default('') }}"
|
|
https_proxy: "{{ https_proxy | default('') }}"
|
|
no_proxy: "{{ no_proxy | default('') }}"
|
|
image: "awx_sdist_builder:{{ awx_version }}"
|
|
name: awx_sdist_builder
|
|
state: started
|
|
detach: false
|
|
volumes:
|
|
- ../:/awx:Z
|
|
delegate_to: localhost
|
|
when: use_container_for_build|default(true)|bool
|
|
|
|
- name: Build AWX distribution locally
|
|
shell: make sdist
|
|
args:
|
|
chdir: ..
|
|
delegate_to: localhost
|
|
when: not use_container_for_build|default(true)|bool
|
|
|
|
- name: Set docker build base path
|
|
set_fact:
|
|
docker_base_path: "{{ awx_local_base_config_path|default('/tmp') }}/docker-image"
|
|
|
|
- name: Set awx_web image name
|
|
set_fact:
|
|
web_image: "{{ web_image|default('awx_web') }}"
|
|
|
|
- name: Set awx_task image name
|
|
set_fact:
|
|
task_image: "{{ task_image|default('awx_task') }}"
|
|
|
|
- name: Ensure directory exists
|
|
file:
|
|
path: "{{ docker_base_path }}"
|
|
state: directory
|
|
delegate_to: localhost
|
|
|
|
- name: Stage sdist
|
|
copy:
|
|
src: "../dist/{{ awx_sdist_file }}"
|
|
dest: "{{ docker_base_path }}/{{ awx_sdist_file }}"
|
|
delegate_to: localhost
|
|
|
|
- name: Template web Dockerfile
|
|
template:
|
|
src: Dockerfile.j2
|
|
dest: "{{ docker_base_path }}/Dockerfile"
|
|
delegate_to: localhost
|
|
|
|
- name: Template task Dockerfile
|
|
template:
|
|
src: Dockerfile.task.j2
|
|
dest: "{{ docker_base_path }}/Dockerfile.task"
|
|
delegate_to: localhost
|
|
|
|
- name: Stage launch_awx
|
|
copy:
|
|
src: launch_awx.sh
|
|
dest: "{{ docker_base_path }}/launch_awx.sh"
|
|
mode: '0700'
|
|
delegate_to: localhost
|
|
|
|
- name: Stage launch_awx_task
|
|
copy:
|
|
src: launch_awx_task.sh
|
|
dest: "{{ docker_base_path }}/launch_awx_task.sh"
|
|
mode: '0700'
|
|
delegate_to: localhost
|
|
|
|
- name: Stage nginx.conf
|
|
copy:
|
|
src: nginx.conf
|
|
dest: "{{ docker_base_path }}/nginx.conf"
|
|
delegate_to: localhost
|
|
|
|
- name: Stage supervisor.conf
|
|
copy:
|
|
src: supervisor.conf
|
|
dest: "{{ docker_base_path }}/supervisor.conf"
|
|
delegate_to: localhost
|
|
|
|
- name: Stage supervisor_task.conf
|
|
copy:
|
|
src: supervisor_task.conf
|
|
dest: "{{ docker_base_path }}/supervisor_task.conf"
|
|
delegate_to: localhost
|
|
|
|
- name: Stage settings.py
|
|
copy:
|
|
src: settings.py
|
|
dest: "{{ docker_base_path }}/settings.py"
|
|
delegate_to: localhost
|
|
|
|
- name: Stage requirements
|
|
copy:
|
|
src: ../requirements/
|
|
dest: "{{ docker_base_path }}/requirements"
|
|
delegate_to: localhost
|
|
|
|
- name: Stage config watcher
|
|
copy:
|
|
src: ../tools/scripts/config-watcher
|
|
dest: "{{ docker_base_path }}/config-watcher"
|
|
delegate_to: localhost
|
|
|
|
- name: Stage Makefile
|
|
copy:
|
|
src: ../Makefile
|
|
dest: "{{ docker_base_path }}/Makefile"
|
|
delegate_to: localhost
|
|
|
|
- name: Stage ansible repo
|
|
copy:
|
|
src: 'ansible.repo'
|
|
dest: '{{ docker_base_path }}/ansible.repo'
|
|
delegate_to: localhost
|
|
|
|
- name: Stage ansible repo key
|
|
copy:
|
|
src: 'RPM-GPG-KEY-ansible-release'
|
|
dest: '{{ docker_base_path }}/RPM-GPG-KEY-ansible-release'
|
|
delegate_to: localhost
|
|
|
|
- name: Build base web image
|
|
docker_image:
|
|
buildargs:
|
|
http_proxy: "{{ http_proxy | default('') }}"
|
|
https_proxy: "{{ https_proxy | default('') }}"
|
|
no_proxy: "{{ no_proxy | default('') }}"
|
|
path: "{{ docker_base_path }}"
|
|
dockerfile: Dockerfile
|
|
name: "{{ web_image }}"
|
|
tag: "{{ awx_version }}"
|
|
delegate_to: localhost
|
|
|
|
- name: Build base task image
|
|
docker_image:
|
|
buildargs:
|
|
http_proxy: "{{ http_proxy | default('') }}"
|
|
https_proxy: "{{ https_proxy | default('') }}"
|
|
no_proxy: "{{ no_proxy | default('') }}"
|
|
path: "{{ docker_base_path }}"
|
|
dockerfile: Dockerfile.task
|
|
name: "{{ task_image }}"
|
|
tag: "{{ awx_version }}"
|
|
pull: no
|
|
delegate_to: localhost
|
|
|
|
- name: Tag task and web images as latest
|
|
command: "docker tag {{ item }}:{{ awx_version }} {{ item }}:latest"
|
|
delegate_to: localhost
|
|
with_items:
|
|
- "{{ task_image }}"
|
|
- "{{ web_image }}"
|
|
|
|
- name: Clean docker base directory
|
|
file:
|
|
path: "{{ docker_base_path }}"
|
|
state: absent
|
|
when: cleanup_docker_base|default(True)
|
|
delegate_to: localhost
|