From e94bb44082411b17fd9fb40b54182db37323c1f2 Mon Sep 17 00:00:00 2001 From: chris meyers Date: Tue, 11 Feb 2020 09:10:34 -0500 Subject: [PATCH] replace rabbitmq with redis * local awx docker-compose and image build only. --- installer/inventory | 4 ---- installer/roles/image_build/files/launch_awx.sh | 2 +- installer/roles/image_build/files/settings.py | 11 ++++------- .../roles/image_build/files/supervisor_task.conf | 13 +------------ .../image_build/templates/launch_awx_task.sh.j2 | 2 +- installer/roles/local_docker/defaults/main.yml | 12 +++--------- .../roles/local_docker/templates/credentials.py.j2 | 14 +++++--------- .../local_docker/templates/docker-compose.yml.j2 | 14 +++++--------- .../roles/local_docker/templates/environment.sh.j2 | 4 ++-- 9 files changed, 22 insertions(+), 54 deletions(-) diff --git a/installer/inventory b/installer/inventory index aa7f588bea..b627a00b69 100644 --- a/installer/inventory +++ b/installer/inventory @@ -93,10 +93,6 @@ pg_port=5432 # containerized postgres deployment on OpenShift # pg_admin_password=postgrespass -# RabbitMQ Configuration -rabbitmq_password=awxpass -rabbitmq_erlang_cookie=cookiemonster - # Use a local distribution build container image for building the AWX package # This is helpful if you don't want to bother installing the build-time dependencies as # it is taken care of already. diff --git a/installer/roles/image_build/files/launch_awx.sh b/installer/roles/image_build/files/launch_awx.sh index 97909bc29b..360be51528 100755 --- a/installer/roles/image_build/files/launch_awx.sh +++ b/installer/roles/image_build/files/launch_awx.sh @@ -9,7 +9,7 @@ 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 ANSIBLE_REMOTE_TEMP=/tmp ANSIBLE_LOCAL_TEMP=/tmp ansible -i "127.0.0.1," -c local -v -m wait_for -a "host=$MEMCACHED_HOST port=$MEMCACHED_PORT" all -ANSIBLE_REMOTE_TEMP=/tmp ANSIBLE_LOCAL_TEMP=/tmp ansible -i "127.0.0.1," -c local -v -m wait_for -a "host=$RABBITMQ_HOST port=$RABBITMQ_PORT" all +ANSIBLE_REMOTE_TEMP=/tmp ANSIBLE_LOCAL_TEMP=/tmp ansible -i "127.0.0.1," -c local -v -m wait_for -a "host=$REDIS_HOST port=$REDIS_PORT" all ANSIBLE_REMOTE_TEMP=/tmp ANSIBLE_LOCAL_TEMP=/tmp ansible -i "127.0.0.1," -c local -v -m postgresql_db --become-user $DATABASE_USER -a "name=$DATABASE_NAME owner=$DATABASE_USER login_user=$DATABASE_USER login_host=$DATABASE_HOST login_password=$DATABASE_PASSWORD port=$DATABASE_PORT" all awx-manage collectstatic --noinput --clear diff --git a/installer/roles/image_build/files/settings.py b/installer/roles/image_build/files/settings.py index ce4e073949..6fe4306ec0 100644 --- a/installer/roles/image_build/files/settings.py +++ b/installer/roles/image_build/files/settings.py @@ -85,17 +85,14 @@ DATABASES = { if os.getenv("DATABASE_SSLMODE", False): DATABASES['default']['OPTIONS'] = {'sslmode': os.getenv("DATABASE_SSLMODE")} -BROKER_URL = 'amqp://{}:{}@{}:{}/{}'.format( - os.getenv("RABBITMQ_USER", None), - os.getenv("RABBITMQ_PASSWORD", None), - os.getenv("RABBITMQ_HOST", None), - os.getenv("RABBITMQ_PORT", "5672"), - os.getenv("RABBITMQ_VHOST", "tower")) +BROKER_URL = 'redis://{}:{}'.format( + os.getenv("REDIS_HOST", None), + os.getenv("REDIS_PORT", "6379"), CHANNEL_LAYERS = { 'default': {'BACKEND': 'asgi_amqp.AMQPChannelLayer', 'ROUTING': 'awx.main.routing.channel_routing', - 'CONFIG': {'url': BROKER_URL}} + 'CONFIG': {'hosts': [(os.getenv("REDIS_HOST", None), int(os.getenv("REDIS_PORT", 6379)))]}} } USE_X_FORWARDED_PORT = True diff --git a/installer/roles/image_build/files/supervisor_task.conf b/installer/roles/image_build/files/supervisor_task.conf index e7e94196e6..a0100980b2 100644 --- a/installer/roles/image_build/files/supervisor_task.conf +++ b/installer/roles/image_build/files/supervisor_task.conf @@ -26,19 +26,8 @@ stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 -[program:channels-worker] -command = awx-manage runworker --only-channels websocket.* -directory = /var/lib/awx -autostart = true -autorestart = true -stopwaitsecs = 5 -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 - [group:tower-processes] -programs=dispatcher,callback-receiver,channels-worker +programs=dispatcher,callback-receiver priority=5 # TODO: Exit Handler diff --git a/installer/roles/image_build/templates/launch_awx_task.sh.j2 b/installer/roles/image_build/templates/launch_awx_task.sh.j2 index c908ad3f62..532f380c62 100755 --- a/installer/roles/image_build/templates/launch_awx_task.sh.j2 +++ b/installer/roles/image_build/templates/launch_awx_task.sh.j2 @@ -9,7 +9,7 @@ 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 ANSIBLE_REMOTE_TEMP=/tmp ANSIBLE_LOCAL_TEMP=/tmp ansible -i "127.0.0.1," -c local -v -m wait_for -a "host=$MEMCACHED_HOST port=$MEMCACHED_PORT" all -ANSIBLE_REMOTE_TEMP=/tmp ANSIBLE_LOCAL_TEMP=/tmp ansible -i "127.0.0.1," -c local -v -m wait_for -a "host=$RABBITMQ_HOST port=$RABBITMQ_PORT" all +ANSIBLE_REMOTE_TEMP=/tmp ANSIBLE_LOCAL_TEMP=/tmp ansible -i "127.0.0.1," -c local -v -m wait_for -a "host=$REDIS_HOST port=$REDIS_PORT" all ANSIBLE_REMOTE_TEMP=/tmp ANSIBLE_LOCAL_TEMP=/tmp ansible -i "127.0.0.1," -c local -v -m postgresql_db --become-user $DATABASE_USER -a "name=$DATABASE_NAME owner=$DATABASE_USER login_user=$DATABASE_USER login_host=$DATABASE_HOST login_password=$DATABASE_PASSWORD port=$DATABASE_PORT" all if [ -z "$AWX_SKIP_MIGRATIONS" ]; then diff --git a/installer/roles/local_docker/defaults/main.yml b/installer/roles/local_docker/defaults/main.yml index 22f74d47ee..9a9277ae68 100644 --- a/installer/roles/local_docker/defaults/main.yml +++ b/installer/roles/local_docker/defaults/main.yml @@ -1,19 +1,13 @@ --- dockerhub_version: "{{ lookup('file', playbook_dir + '/../VERSION') }}" -rabbitmq_version: "3.7.4" -rabbitmq_image: "ansible/awx_rabbitmq:{{rabbitmq_version}}" -rabbitmq_default_vhost: "awx" -rabbitmq_erlang_cookie: "cookiemonster" -rabbitmq_hostname: "rabbitmq" -rabbitmq_port: "5672" -rabbitmq_user: "guest" -rabbitmq_password: "guest" +redis_image: "redis" +redis_hostname: "redis" +redis_port: "6379" postgresql_version: "10" postgresql_image: "postgres:{{postgresql_version}}" - memcached_image: "memcached" memcached_version: "alpine" memcached_hostname: "memcached" diff --git a/installer/roles/local_docker/templates/credentials.py.j2 b/installer/roles/local_docker/templates/credentials.py.j2 index 73951ca803..be71a5dc4a 100644 --- a/installer/roles/local_docker/templates/credentials.py.j2 +++ b/installer/roles/local_docker/templates/credentials.py.j2 @@ -10,17 +10,13 @@ DATABASES = { } } -BROKER_URL = 'amqp://{}:{}@{}:{}/{}'.format( - "{{ rabbitmq_user }}", - "{{ rabbitmq_password }}", - "{{ rabbitmq_hostname | default('rabbitmq')}}", - "{{ rabbitmq_port }}", - "{{ rabbitmq_default_vhost }}") +BROKER_URL = 'redis://{}:{}/'.format( + "{{ redis_hostname }}", + "{{ redis_port }}",) CHANNEL_LAYERS = { - 'default': {'BACKEND': 'asgi_amqp.AMQPChannelLayer', - 'ROUTING': 'awx.main.routing.channel_routing', - 'CONFIG': {'url': BROKER_URL}} + 'default': {'BACKEND': 'awx.main.channels.RedisGroupBroadcastChannelLayer', + 'CONFIG': {'hosts': [("{{ redis_hostname }}", {{ redis_port|int }})]}} } CACHES = { diff --git a/installer/roles/local_docker/templates/docker-compose.yml.j2 b/installer/roles/local_docker/templates/docker-compose.yml.j2 index cf799e3c09..2fd82a1005 100644 --- a/installer/roles/local_docker/templates/docker-compose.yml.j2 +++ b/installer/roles/local_docker/templates/docker-compose.yml.j2 @@ -6,7 +6,7 @@ services: image: {{ awx_web_docker_actual_image }} container_name: awx_web depends_on: - - rabbitmq + - redis - memcached {% if pg_hostname is not defined %} - postgres @@ -63,7 +63,7 @@ services: image: {{ awx_task_docker_actual_image }} container_name: awx_task depends_on: - - rabbitmq + - redis - memcached - web {% if pg_hostname is not defined %} @@ -111,15 +111,11 @@ services: https_proxy: {{ https_proxy | default('') }} no_proxy: {{ no_proxy | default('') }} - rabbitmq: - image: {{ rabbitmq_image }} - container_name: awx_rabbitmq + redis: + image: {{ redis_image }} + container_name: awx_redis restart: unless-stopped environment: - RABBITMQ_DEFAULT_VHOST: "{{ rabbitmq_default_vhost }}" - RABBITMQ_DEFAULT_USER: "{{ rabbitmq_user }}" - RABBITMQ_DEFAULT_PASS: "{{ rabbitmq_password | quote }}" - RABBITMQ_ERLANG_COOKIE: {{ rabbitmq_erlang_cookie }} http_proxy: {{ http_proxy | default('') }} https_proxy: {{ https_proxy | default('') }} no_proxy: {{ no_proxy | default('') }} diff --git a/installer/roles/local_docker/templates/environment.sh.j2 b/installer/roles/local_docker/templates/environment.sh.j2 index 817c270e11..83b584b261 100644 --- a/installer/roles/local_docker/templates/environment.sh.j2 +++ b/installer/roles/local_docker/templates/environment.sh.j2 @@ -8,7 +8,7 @@ DATABASE_ADMIN_PASSWORD={{ pg_admin_password|quote }} {% endif %} MEMCACHED_HOST={{ memcached_hostname|default('memcached') }} MEMCACHED_PORT={{ memcached_port|default('11211')|quote }} -RABBITMQ_HOST={{ rabbitmq_hostname|default('rabbitmq')|quote }} -RABBITMQ_PORT={{ rabbitmq_port|default('5672')|quote }} +REDIS_HOST={{ redis_hostname|quote }} +REDIS_PORT={{ redis_port|quote }} AWX_ADMIN_USER={{ admin_user|quote }} AWX_ADMIN_PASSWORD={{ admin_password|quote }}