From 69edef430c7ce5fa59c6dfe1195e39edf4a54efb Mon Sep 17 00:00:00 2001 From: Shane McDonald Date: Wed, 3 Mar 2021 19:41:50 -0500 Subject: [PATCH] Get clustered dev env working --- Makefile | 5 ++- .../ansible/roles/sources/tasks/main.yml | 1 + .../sources/templates/docker-compose.yml.j2 | 38 +++++++++++-------- .../roles/sources/templates/haproxy.cfg.j2} | 15 ++++---- 4 files changed, 34 insertions(+), 25 deletions(-) rename tools/docker-compose/{haproxy.cfg => ansible/roles/sources/templates/haproxy.cfg.j2} (67%) diff --git a/Makefile b/Makefile index 971baae552..a68ab74c46 100644 --- a/Makefile +++ b/Makefile @@ -534,15 +534,16 @@ awx/projects: @mkdir -p $@ COMPOSE_UP_OPTS ?= +CLUSER_NODE_COUNT ?= 1 docker-compose-sources: ansible-playbook -i tools/docker-compose/inventory tools/docker-compose/ansible/sources.yml \ -e awx_image=$(DEV_DOCKER_TAG_BASE)/awx_devel \ - -e awx_image_tag=$(COMPOSE_TAG) + -e awx_image_tag=$(COMPOSE_TAG) \ -e cluster_node_count=$(CLUSER_NODE_COUNT) docker-compose: docker-auth awx/projects docker-compose-sources - docker-compose -f tools/docker-compose/_sources/docker-compose.yml $(COMPOSE_UP_OPTS) up --no-recreate awx_1 + docker-compose -f tools/docker-compose/_sources/docker-compose.yml $(COMPOSE_UP_OPTS) up docker-compose-credential-plugins: docker-auth awx/projects docker-compose-sources echo -e "\033[0;31mTo generate a CyberArk Conjur API key: docker exec -it tools_conjur_1 conjurctl account create quick-start\033[0m" diff --git a/tools/docker-compose/ansible/roles/sources/tasks/main.yml b/tools/docker-compose/ansible/roles/sources/tasks/main.yml index 33ace141f1..55937b4051 100644 --- a/tools/docker-compose/ansible/roles/sources/tasks/main.yml +++ b/tools/docker-compose/ansible/roles/sources/tasks/main.yml @@ -44,6 +44,7 @@ with_items: - "database.py" - "websocket_secret.py" + - "haproxy.cfg" - name: Delete old local_settings.py file: diff --git a/tools/docker-compose/ansible/roles/sources/templates/docker-compose.yml.j2 b/tools/docker-compose/ansible/roles/sources/templates/docker-compose.yml.j2 index 0f043cf215..7d724c82f4 100644 --- a/tools/docker-compose/ansible/roles/sources/templates/docker-compose.yml.j2 +++ b/tools/docker-compose/ansible/roles/sources/templates/docker-compose.yml.j2 @@ -44,6 +44,28 @@ services: - "redis_socket_{{ container_postfix }}:/var/run/redis/:rw" privileged: true tty: true + ports: + - "{{ awx_sdb_port_start }}:{{ awx_sdb_port_end }}" # sdb-listen +{% if cluster_node_count|int == 1 %} + - "8080:8080" # unused but mapped for debugging + - "8888:8888" # jupyter notebook + - "8013:8013" # http + - "8043:8043" # https +{% else %} + haproxy: + image: haproxy + volumes: + - "./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg" + depends_on: +{% for i in range(cluster_node_count|int) -%} + {% set container_postfix = loop.index %} + - "awx_{{ container_postfix }}" +{% endfor %} + ports: + - "8013:8013" + - "8043:8043" + - "1936:1936" +{% endif %} redis_{{ container_postfix }}: image: redis:latest container_name: tools_redis_{{ container_postfix }} @@ -69,22 +91,6 @@ services: POSTGRES_PASSWORD: {{ pg_password }} volumes: - "awx_db:/var/lib/postgresql/data" -{% if cluster_node_count|int > 1 %} - haproxy: - image: haproxy - volumes: - - "../ha.conf:/usr/local/etc/haproxy/haproxy.cfg" - depends_on: -{% for i in range(cluster_node_count|int) -%} - {% set container_postfix = loop.index %} - - "awx_{{ container_postfix }}" -{% endfor %} - ports: - - "8013:8013" - - "8043:8043" - - "1936:1936" -{% endif -%} {# haproxy #} - volumes: awx_db: receptor: diff --git a/tools/docker-compose/haproxy.cfg b/tools/docker-compose/ansible/roles/sources/templates/haproxy.cfg.j2 similarity index 67% rename from tools/docker-compose/haproxy.cfg rename to tools/docker-compose/ansible/roles/sources/templates/haproxy.cfg.j2 index d37cbf691a..33837ded1f 100644 --- a/tools/docker-compose/haproxy.cfg +++ b/tools/docker-compose/ansible/roles/sources/templates/haproxy.cfg.j2 @@ -1,5 +1,4 @@ global - debug stats socket /tmp/admin.sock stats timeout 30s @@ -30,16 +29,18 @@ backend nodes http-request set-header X-Forwarded-Port %[dst_port] http-request add-header X-Forwarded-Proto https if { ssl_fc } option httpchk HEAD / HTTP/1.1\r\nHost:localhost - server awx-1 awx-1:8013 check - server awx-2 awx-2:8013 check - server awx-3 awx-3:8013 check +{% for i in range(cluster_node_count|int) %} + {% set container_postfix = loop.index %} + server tools_awx_{{ container_postfix }} tools_awx_{{ container_postfix }}:8013 check +{% endfor %} backend nodes_ssl mode tcp balance roundrobin - server awx-1 awx-1:8043 - server awx-2 awx-2:8043 - server awx-3 awx-3:8043 +{% for i in range(cluster_node_count|int) %} + {% set container_postfix = loop.index %} + server tools_awx_{{ container_postfix }} tools_awx_{{ container_postfix }}:8043 check +{% endfor %} listen stats bind *:1936