From d1a71fb7bee5e9b26f9af53f07d490b415159aac Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Sun, 12 Feb 2017 16:13:15 -0500 Subject: [PATCH 1/3] add supervisor option to development environment --- .gitignore | 1 + Makefile | 6 ++ tools/docker-compose/Dockerfile | 1 + tools/docker-compose/start_development.sh | 8 ++- tools/docker-compose/supervisor.conf | 73 +++++++++++++++++++++++ 5 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 tools/docker-compose/supervisor.conf diff --git a/.gitignore b/.gitignore index ca9dd12298..d5e58e8c87 100644 --- a/.gitignore +++ b/.gitignore @@ -112,3 +112,4 @@ local/ awx/lib/.deps_built awx/lib/site-packages venv/* +use_dev_supervisor.txt diff --git a/Makefile b/Makefile index 6d55edc698..836f96da9c 100644 --- a/Makefile +++ b/Makefile @@ -378,6 +378,12 @@ server: server_noattach servercc: server_noattach tmux -2 -CC attach-session -t tower +supervisor: + @if [ "$(VENV_BASE)" ]; then \ + . $(VENV_BASE)/tower/bin/activate; \ + fi; \ + supervisord --configuration /supervisor.conf --pidfile=/tmp/supervisor_pid + # Alternate approach to tmux to run all development tasks specified in # Procfile. https://youtu.be/OPMgaibszjk honcho: diff --git a/tools/docker-compose/Dockerfile b/tools/docker-compose/Dockerfile index 19b699ab36..4a78226a3a 100644 --- a/tools/docker-compose/Dockerfile +++ b/tools/docker-compose/Dockerfile @@ -19,6 +19,7 @@ RUN mkdir -p /etc/tower RUN mkdir -p /data/db ADD tools/docker-compose/license /etc/tower/license RUN pip2 install honcho +RUN pip2 install supervisor RUN curl -LO https://github.com/Yelp/dumb-init/releases/download/v1.1.3/dumb-init_1.1.3_amd64 && chmod +x ./dumb-init_1.1.3_amd64 && mv ./dumb-init_1.1.3_amd64 /usr/bin/dumb-init ADD tools/docker-compose/ansible-tower.egg-link /tmp/ansible-tower.egg-link ADD tools/docker-compose/tower-manage /usr/local/bin/tower-manage diff --git a/tools/docker-compose/start_development.sh b/tools/docker-compose/start_development.sh index ee94888431..9814a9344c 100755 --- a/tools/docker-compose/start_development.sh +++ b/tools/docker-compose/start_development.sh @@ -25,6 +25,7 @@ fi cp -nR /tmp/ansible_tower.egg-info /tower_devel/ || true cp /tmp/ansible-tower.egg-link /venv/tower/lib/python2.7/site-packages/ansible-tower.egg-link +yes | cp -rf /tower_devel/tools/docker-compose/supervisor.conf /supervisor.conf # Tower bootstrapping make version_file @@ -35,4 +36,9 @@ mkdir -p /tower_devel/awx/public/static mkdir -p /tower_devel/awx/ui/static # Start the service -make honcho + +if [ -f "/tower_devel/tools/docker-compose/use_dev_supervisor.txt" ]; then + make supervisor +else + make honcho +fi diff --git a/tools/docker-compose/supervisor.conf b/tools/docker-compose/supervisor.conf new file mode 100644 index 0000000000..787720fec3 --- /dev/null +++ b/tools/docker-compose/supervisor.conf @@ -0,0 +1,73 @@ +[supervisord] +umask = 022 +minfds = 4096 +nodaemon=true + +[program:celeryd] +command = make celeryd +autostart = true +autorestart = true +redirect_stderr=true +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 + +[program:receiver] +command = make receiver +autostart = true +autorestart = true +redirect_stderr=true +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 + +[program:runworker] +command = make runworker +autostart = true +autorestart = true +redirect_stderr=true +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 + +[program:uwsgi] +command = make uwsgi +autostart = true +autorestart = true +redirect_stderr=true +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 + +[program:daphne] +command = make daphne +autostart = true +autorestart = true +redirect_stderr=true +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 + +[program:factcacher] +command = make factcacher +autostart = true +autorestart = true +redirect_stderr=true +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 + +[program:nginx] +command = make nginx +autostart = true +autorestart = true +redirect_stderr=true +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 + +[program:flower] +command = make flower +autostart = true +autorestart = true +redirect_stderr=true +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 + +[group:tower-processes] +programs=celeryd,receiver,runworker,uwsgi,daphne,factcacher,nginx,flower +priority=5 + From b5aad8cbed9a6c56d31034c8b584d44f53fb5672 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Mon, 13 Feb 2017 11:45:11 -0500 Subject: [PATCH 2/3] bypass the makefile target for most commands in dev supervisor --- tools/docker-compose/supervisor.conf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/docker-compose/supervisor.conf b/tools/docker-compose/supervisor.conf index 787720fec3..f33066e627 100644 --- a/tools/docker-compose/supervisor.conf +++ b/tools/docker-compose/supervisor.conf @@ -4,7 +4,7 @@ minfds = 4096 nodaemon=true [program:celeryd] -command = make celeryd +command = python manage.py celeryd -l DEBUG -B --autoreload --autoscale=20,3 --schedule=/celerybeat-schedule -Q projects,jobs,default,scheduler,broadcast_all,%(ENV_HOSTNAME)s -n celery@%(ENV_HOSTNAME)s autostart = true autorestart = true redirect_stderr=true @@ -12,7 +12,7 @@ stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 [program:receiver] -command = make receiver +command = python manage.py run_callback_receiver autostart = true autorestart = true redirect_stderr=true @@ -20,7 +20,7 @@ stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 [program:runworker] -command = make runworker +command = python manage.py runworker --only-channels websocket.* autostart = true autorestart = true redirect_stderr=true @@ -36,7 +36,7 @@ stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 [program:daphne] -command = make daphne +command = daphne -b 0.0.0.0 -p 8051 awx.asgi:channel_layer autostart = true autorestart = true redirect_stderr=true @@ -44,7 +44,7 @@ stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 [program:factcacher] -command = make factcacher +command = python manage.py run_fact_cache_receiver autostart = true autorestart = true redirect_stderr=true @@ -52,7 +52,7 @@ stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 [program:nginx] -command = make nginx +command = nginx -g "daemon off;" autostart = true autorestart = true redirect_stderr=true From 9a880910425a80b9be486cd59f1490e93f618f70 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Mon, 13 Feb 2017 17:33:28 -0500 Subject: [PATCH 3/3] get supervisorctl to work in dev supervisor env --- tools/docker-compose/supervisor.conf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/docker-compose/supervisor.conf b/tools/docker-compose/supervisor.conf index f33066e627..aab7d8aeb7 100644 --- a/tools/docker-compose/supervisor.conf +++ b/tools/docker-compose/supervisor.conf @@ -71,3 +71,11 @@ stdout_logfile_maxbytes=0 programs=celeryd,receiver,runworker,uwsgi,daphne,factcacher,nginx,flower priority=5 +[unix_http_server] +file=/tmp/supervisor.sock + +[supervisorctl] +serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface