mirror of
https://github.com/ansible/awx.git
synced 2026-02-15 10:10:01 -03:30
I’m going to be reusing this code on the Tower side, and I’m trying to refactor some of the AWX specific bits out. There will probably be more to come, but this is a good start.
227 lines
5.7 KiB
YAML
227 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"
|
|
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
|