mirror of
https://github.com/ansible/awx.git
synced 2026-02-01 01:28:09 -03:30
Minikube-based development environment
Works in conjunction with https://github.com/ansible/awx-operator/pull/71 See docs/development/minikube.md
This commit is contained in:
@@ -3,5 +3,6 @@
|
||||
hosts: localhost
|
||||
gather_facts: true
|
||||
roles:
|
||||
- {role: dockerfile}
|
||||
- {role: image_build}
|
||||
- {role: image_push, when: "docker_registry is defined"}
|
||||
|
||||
6
installer/dockerfile.yml
Normal file
6
installer/dockerfile.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
- name: Render AWX Dockerfile and sources
|
||||
hosts: localhost
|
||||
gather_facts: true
|
||||
roles:
|
||||
- {role: dockerfile}
|
||||
6
installer/roles/dockerfile/defaults/main.yml
Normal file
6
installer/roles/dockerfile/defaults/main.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
build_dev: false
|
||||
kube_dev: false
|
||||
dockerfile_dest: '..'
|
||||
dockerfile_name: 'Dockerfile'
|
||||
template_dest: '_build'
|
||||
@@ -5,6 +5,14 @@ if [ `id -u` -ge 500 ]; then
|
||||
rm /tmp/passwd
|
||||
fi
|
||||
|
||||
if [ -n "${AWX_KUBE_DEVEL}" ]; then
|
||||
pushd /awx_devel
|
||||
make awx-link
|
||||
popd
|
||||
|
||||
export SDB_NOTIFY_HOST=$(ip route | head -n1 | awk '{print $3}')
|
||||
fi
|
||||
|
||||
source /etc/tower/conf.d/environment.sh
|
||||
|
||||
ANSIBLE_REMOTE_TEMP=/tmp ANSIBLE_LOCAL_TEMP=/tmp ansible -i "127.0.0.1," -c local -v -m wait_for -a "host=$DATABASE_HOST port=$DATABASE_PORT" all
|
||||
@@ -5,6 +5,14 @@ if [ `id -u` -ge 500 ]; then
|
||||
rm /tmp/passwd
|
||||
fi
|
||||
|
||||
if [ -n "${AWX_KUBE_DEVEL}" ]; then
|
||||
pushd /awx_devel
|
||||
make awx-link
|
||||
popd
|
||||
|
||||
export SDB_NOTIFY_HOST=$(ip route | head -n1 | awk '{print $3}')
|
||||
fi
|
||||
|
||||
source /etc/tower/conf.d/environment.sh
|
||||
|
||||
ANSIBLE_REMOTE_TEMP=/tmp ANSIBLE_LOCAL_TEMP=/tmp ansible -i "127.0.0.1," -c local -v -m wait_for -a "host=$DATABASE_HOST port=$DATABASE_PORT" all
|
||||
19
installer/roles/dockerfile/tasks/main.yml
Normal file
19
installer/roles/dockerfile/tasks/main.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
|
||||
- name: Create .build directory
|
||||
file:
|
||||
path: "{{ dockerfile_dest }}/{{ template_dest }}"
|
||||
state: directory
|
||||
|
||||
- name: Render supervisor configs
|
||||
template:
|
||||
src: "{{ item }}.j2"
|
||||
dest: "{{ dockerfile_dest }}/{{ template_dest }}/{{ item }}"
|
||||
with_items:
|
||||
- "supervisor.conf"
|
||||
- "supervisor_task.conf"
|
||||
|
||||
- name: Render Dockerfile
|
||||
template:
|
||||
src: Dockerfile.j2
|
||||
dest: "{{ dockerfile_dest }}/{{ dockerfile_name }}"
|
||||
@@ -1,12 +1,8 @@
|
||||
{% if build_dev|default(False)|bool %}
|
||||
### This file is generated from
|
||||
### installer/roles/image_build/templates/Dockerfile.j2
|
||||
### installer/roles/dockerfile/templates/Dockerfile.j2
|
||||
###
|
||||
### DO NOT EDIT
|
||||
###
|
||||
{% else %}
|
||||
{% set build_dev = False %}
|
||||
{% endif %}
|
||||
|
||||
# Locations - set globally to be used across stages
|
||||
ARG COLLECTION_BASE="/var/lib/awx/vendor/awx_ansible_collections"
|
||||
@@ -67,12 +63,10 @@ ADD requirements/requirements_ansible.txt \
|
||||
RUN cd /tmp && make requirements_awx requirements_ansible_py3
|
||||
RUN cd /tmp && make requirements_collections
|
||||
|
||||
{% if build_dev|bool %}
|
||||
{% if (build_dev|bool) or (kube_dev|bool) %}
|
||||
ADD requirements/requirements_dev.txt /tmp/requirements
|
||||
RUN cd /tmp && make requirements_awx_dev requirements_ansible_dev
|
||||
{% endif %}
|
||||
|
||||
{% if not build_dev|bool %}
|
||||
{% else %}
|
||||
# Use the distro provided npm to bootstrap our required version of node
|
||||
RUN npm install -g n && n 14.15.1 && dnf remove -y nodejs
|
||||
|
||||
@@ -81,6 +75,7 @@ COPY . /tmp/src/
|
||||
WORKDIR /tmp/src/
|
||||
RUN make sdist && \
|
||||
/var/lib/awx/venv/awx/bin/pip install dist/awx-$(cat VERSION).tar.gz
|
||||
RUN ln -s /var/lib/awx/venv/awx/bin/awx-manage /usr/bin/awx-manage
|
||||
{% endif %}
|
||||
|
||||
# Final container(s)
|
||||
@@ -146,7 +141,7 @@ RUN cd /usr/local/bin && \
|
||||
curl -L https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz | \
|
||||
tar -xz --strip-components=1 --wildcards --no-anchored 'oc'
|
||||
|
||||
{% if build_dev|bool %}
|
||||
{% if (build_dev|bool) or (kube_dev|bool) %}
|
||||
# Install development/test requirements
|
||||
RUN dnf -y install \
|
||||
gdb \
|
||||
@@ -183,32 +178,32 @@ RUN openssl req -nodes -newkey rsa:2048 -keyout /etc/nginx/nginx.key -out /etc/n
|
||||
-subj "/C=US/ST=North Carolina/L=Durham/O=Ansible/OU=AWX Development/CN=awx.localhost" && \
|
||||
openssl x509 -req -days 365 -in /etc/nginx/nginx.csr -signkey /etc/nginx/nginx.key -out /etc/nginx/nginx.crt && \
|
||||
chmod 640 /etc/nginx/nginx.{csr,key,crt}
|
||||
{% else %}
|
||||
RUN ln -s /var/lib/awx/venv/awx/bin/awx-manage /usr/bin/awx-manage
|
||||
{% endif %}
|
||||
|
||||
# Create default awx rsyslog config
|
||||
ADD installer/roles/image_build/files/rsyslog.conf /var/lib/awx/rsyslog/rsyslog.conf
|
||||
ADD installer/roles/dockerfile/files/rsyslog.conf /var/lib/awx/rsyslog/rsyslog.conf
|
||||
|
||||
## File mappings
|
||||
{% if build_dev|bool %}
|
||||
ADD tools/docker-compose/launch_awx.sh /usr/bin/launch_awx.sh
|
||||
ADD tools/docker-compose/awx-manage /usr/local/bin/awx-manage
|
||||
ADD tools/docker-compose/awx.egg-link /tmp/awx.egg-link
|
||||
ADD tools/docker-compose/nginx.conf /etc/nginx/nginx.conf
|
||||
ADD tools/docker-compose/nginx.vh.default.conf /etc/nginx/conf.d/nginx.vh.default.conf
|
||||
ADD tools/docker-compose/start_tests.sh /start_tests.sh
|
||||
ADD tools/docker-compose/bootstrap_development.sh /usr/bin/bootstrap_development.sh
|
||||
ADD tools/docker-compose/entrypoint.sh /entrypoint.sh
|
||||
ADD tools/scripts/awx-python /usr/bin/awx-python
|
||||
{% else %}
|
||||
ADD installer/roles/image_build/files/launch_awx.sh /usr/bin/launch_awx.sh
|
||||
ADD installer/roles/image_build/files/launch_awx_task.sh /usr/bin/launch_awx_task.sh
|
||||
ADD installer/roles/image_build/files/settings.py /etc/tower/settings.py
|
||||
ADD installer/roles/image_build/files/supervisor.conf /etc/supervisord.conf
|
||||
ADD installer/roles/image_build/files/supervisor_task.conf /etc/supervisord_task.conf
|
||||
ADD installer/roles/dockerfile/files/launch_awx.sh /usr/bin/launch_awx.sh
|
||||
ADD installer/roles/dockerfile/files/launch_awx_task.sh /usr/bin/launch_awx_task.sh
|
||||
ADD installer/roles/dockerfile/files/settings.py /etc/tower/settings.py
|
||||
ADD {{ template_dest }}/supervisor.conf /etc/supervisord.conf
|
||||
ADD {{ template_dest }}/supervisor_task.conf /etc/supervisord_task.conf
|
||||
ADD tools/scripts/config-watcher /usr/bin/config-watcher
|
||||
{% endif %}
|
||||
{% if (build_dev|bool) or (kube_dev|bool) %}
|
||||
ADD tools/docker-compose/awx.egg-link /tmp/awx.egg-link
|
||||
ADD tools/docker-compose/awx-manage /usr/local/bin/awx-manage
|
||||
ADD tools/scripts/awx-python /usr/bin/awx-python
|
||||
{% endif %}
|
||||
|
||||
# Pre-create things we need to access
|
||||
RUN for dir in \
|
||||
@@ -231,7 +226,7 @@ RUN chmod u+s /usr/bin/bwrap ; \
|
||||
chgrp -R root ${COLLECTION_BASE} ; \
|
||||
chmod -R g+rw ${COLLECTION_BASE}
|
||||
|
||||
{% if build_dev|bool %}
|
||||
{% if (build_dev|bool) or (kube_dev|bool) %}
|
||||
RUN for dir in \
|
||||
/var/lib/awx/venv \
|
||||
/var/lib/awx/venv/awx/lib/python3.6 \
|
||||
@@ -256,6 +251,7 @@ ENV HOME="/var/lib/awx"
|
||||
ENV PATH="/usr/pgsql-10/bin:${PATH}"
|
||||
|
||||
{% if build_dev|bool %}
|
||||
|
||||
EXPOSE 8043 8013 8080 22
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
@@ -6,7 +6,12 @@ logfile_maxbytes = 0
|
||||
pidfile = /var/run/supervisor/supervisor.web.pid
|
||||
|
||||
[program:nginx]
|
||||
{% if kube_dev | bool %}
|
||||
command = make nginx
|
||||
directory = /awx_devel
|
||||
{% else %}
|
||||
command = nginx -g "daemon off;"
|
||||
{% endif %}
|
||||
autostart = true
|
||||
autorestart = true
|
||||
stopwaitsecs = 5
|
||||
@@ -16,34 +21,59 @@ stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
|
||||
[program:uwsgi]
|
||||
|
||||
{% if kube_dev | bool %}
|
||||
command = make uwsgi
|
||||
directory = /awx_devel
|
||||
environment =
|
||||
UWSGI_DEV_RELOAD_COMMAND='supervisorctl -c /etc/supervisord_task.conf restart all; supervisorctl restart tower-processes:daphne tower-processes:wsbroadcast'
|
||||
{% else %}
|
||||
command = /var/lib/awx/venv/awx/bin/uwsgi --socket 127.0.0.1:8050 --module=awx.wsgi:application --vacuum --processes=5 --harakiri=120 --no-orphans --master --max-requests=1000 --master-fifo=/var/lib/awx/awxfifo --lazy-apps -b 32768
|
||||
directory = /var/lib/awx
|
||||
{% endif %}
|
||||
autostart = true
|
||||
autorestart = true
|
||||
stopwaitsecs = 15
|
||||
stopsignal = INT
|
||||
stopasgroup=true
|
||||
killasgroup=true
|
||||
stopsignal=KILL
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
|
||||
[program:daphne]
|
||||
{% if kube_dev | bool %}
|
||||
command = make daphne
|
||||
directory = /awx_devel
|
||||
{% else %}
|
||||
command = /var/lib/awx/venv/awx/bin/daphne -b 127.0.0.1 -p 8051 --websocket_timeout -1 awx.asgi:channel_layer
|
||||
directory = /var/lib/awx
|
||||
{% endif %}
|
||||
autostart = true
|
||||
stopsignal=KILL
|
||||
autorestart = true
|
||||
stopwaitsecs = 5
|
||||
stopasgroup=true
|
||||
killasgroup=true
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
|
||||
[program:wsbroadcast]
|
||||
{% if kube_dev | bool %}
|
||||
command = make wsbroadcast
|
||||
directory = /awx_devel
|
||||
{% else %}
|
||||
command = awx-manage run_wsbroadcast
|
||||
directory = /var/lib/awx
|
||||
{% endif %}
|
||||
autostart = true
|
||||
autorestart = true
|
||||
stopwaitsecs = 5
|
||||
stopasgroup=true
|
||||
killasgroup=true
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
@@ -53,6 +83,7 @@ stderr_logfile_maxbytes=0
|
||||
command = rsyslogd -n -i /var/run/awx-rsyslog/rsyslog.pid -f /var/lib/awx/rsyslog/rsyslog.conf
|
||||
autostart = true
|
||||
autorestart = true
|
||||
startretries = 10
|
||||
stopwaitsecs = 5
|
||||
stopsignal=TERM
|
||||
stopasgroup=true
|
||||
@@ -6,8 +6,13 @@ logfile_maxbytes = 0
|
||||
pidfile = /var/run/supervisor/supervisor.pid
|
||||
|
||||
[program:dispatcher]
|
||||
{% if kube_dev | bool %}
|
||||
command = make dispatcher
|
||||
directory = /awx_devel
|
||||
{% else %}
|
||||
command = awx-manage run_dispatcher
|
||||
directory = /var/lib/awx
|
||||
{% endif %}
|
||||
autostart = true
|
||||
autorestart = true
|
||||
stopwaitsecs = 5
|
||||
@@ -17,8 +22,13 @@ stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
|
||||
[program:callback-receiver]
|
||||
{% if kube_dev | bool %}
|
||||
command = make receiver
|
||||
directory = /awx_devel
|
||||
{% else %}
|
||||
command = awx-manage run_callback_receiver
|
||||
directory = /var/lib/awx
|
||||
{% endif %}
|
||||
autostart = true
|
||||
autorestart = true
|
||||
stopwaitsecs = 5
|
||||
@@ -1,6 +1,5 @@
|
||||
---
|
||||
create_preload_data: true
|
||||
build_dev: false
|
||||
|
||||
# Helper vars to construct the proper download URL for the current architecture
|
||||
tini_architecture: '{{ { "x86_64": "amd64", "aarch64": "arm64", "armv7": "arm" }[ansible_facts.architecture] }}'
|
||||
|
||||
@@ -21,11 +21,6 @@
|
||||
set_fact:
|
||||
awx_image: "{{ awx_image|default('awx') }}"
|
||||
|
||||
- name: Render Dockerfile
|
||||
template:
|
||||
src: Dockerfile.j2
|
||||
dest: ../Dockerfile
|
||||
|
||||
# Calling Docker directly because docker-py doesnt support BuildKit
|
||||
- name: Build AWX image
|
||||
command: docker build -t {{ awx_image }}:{{ awx_version }} ..
|
||||
|
||||
@@ -61,6 +61,7 @@ data:
|
||||
autostart = true
|
||||
autorestart = true
|
||||
stopwaitsecs = 5
|
||||
startretries = 10
|
||||
stopsignal=TERM
|
||||
stopasgroup=true
|
||||
killasgroup=true
|
||||
|
||||
Reference in New Issue
Block a user