From 6f1f64118b6fcb69b9dabd6173b075d158465109 Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Wed, 3 Mar 2021 15:38:27 -0500 Subject: [PATCH] wip --- Makefile | 12 ++-- tools/docker-compose/Dockerfile-haproxy | 2 - .../ansible/roles/sources/defaults/main.yml | 1 + .../sources/templates/docker-compose.yml.j2 | 65 +++++++++++++------ 4 files changed, 50 insertions(+), 30 deletions(-) delete mode 100644 tools/docker-compose/Dockerfile-haproxy diff --git a/Makefile b/Makefile index 858a6f67e4..971baae552 100644 --- a/Makefile +++ b/Makefile @@ -539,25 +539,23 @@ 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 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 - -docker-compose-cluster: docker-auth awx/projects - docker-compose -f tools/docker-compose-cluster.yml up + docker-compose -f tools/docker-compose/_sources/docker-compose.yml $(COMPOSE_UP_OPTS) up --no-recreate awx_1 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" docker-compose -f tools/docker-compose/_sources/docker-compose.yml -f tools/docker-credential-plugins-override.yml up --no-recreate awx docker-compose-test: docker-auth awx/projects docker-compose-sources - docker-compose -f tools/docker-compose/_sources/docker-compose.yml run --rm --service-ports awx /bin/bash + docker-compose -f tools/docker-compose/_sources/docker-compose.yml run --rm --service-ports awx_1 /bin/bash docker-compose-runtest: awx/projects docker-compose-sources - docker-compose -f tools/docker-compose/_sources/docker-compose.yml run --rm --service-ports awx /start_tests.sh + docker-compose -f tools/docker-compose/_sources/docker-compose.yml run --rm --service-ports awx_1 /start_tests.sh docker-compose-build-swagger: awx/projects docker-compose-sources - docker-compose -f tools/docker-compose/_sources/docker-compose.yml run --rm --service-ports --no-deps awx /start_tests.sh swagger + docker-compose -f tools/docker-compose/_sources/docker-compose.yml run --rm --service-ports --no-deps awx_1 /start_tests.sh swagger detect-schema-change: genschema curl https://s3.amazonaws.com/awx-public-ci-files/schema.json -o reference-schema.json diff --git a/tools/docker-compose/Dockerfile-haproxy b/tools/docker-compose/Dockerfile-haproxy deleted file mode 100644 index 9d38924939..0000000000 --- a/tools/docker-compose/Dockerfile-haproxy +++ /dev/null @@ -1,2 +0,0 @@ -FROM haproxy:1.6-alpine -COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg diff --git a/tools/docker-compose/ansible/roles/sources/defaults/main.yml b/tools/docker-compose/ansible/roles/sources/defaults/main.yml index f867d7ef2a..cff661deb8 100644 --- a/tools/docker-compose/ansible/roles/sources/defaults/main.yml +++ b/tools/docker-compose/ansible/roles/sources/defaults/main.yml @@ -5,3 +5,4 @@ awx_image: 'quay.io/ansible/awx_devel' pg_port: 5432 pg_username: 'awx' pg_database: 'awx' +cluster_node_count: "{{ lookup('env', 'CLUSTER_COUNT') | default(1, True) }}" 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 1d0799c7b9..0f043cf215 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 @@ -1,30 +1,34 @@ --- version: '2' services: +{% for i in range(cluster_node_count|int) %} + {% set container_postfix = loop.index %} + {% set awx_sdb_port_start = 7899 + (loop.index0*100) | int %} + {% set awx_sdb_port_end = 7999 + (loop.index0*100) | int %} # Primary AWX Development Container - awx: + awx_{{ container_postfix }}: user: "{{ ansible_user_uid }}" image: "{{ awx_image }}:{{ awx_image_tag }}" - container_name: tools_awx_1 - hostname: awx + container_name: tools_awx_{{ container_postfix }} + hostname: awx_{{ container_postfix }} command: launch_awx.sh environment: OS: "{{ os_info.stdout }}" SDB_HOST: 0.0.0.0 - SDB_PORT: 7899 + SDB_PORT: {{ awx_sdb_port_start }} AWX_GROUP_QUEUES: tower RECEPTORCTL_SOCKET: /var/run/receptor/receptor.sock ports: - - "2222:2222" - - "8888:8888" - - "8080:8080" - - "8013:8013" - - "8043:8043" - - "6899:6899" # default port range for sdb-listen - - "7899-7999:7899-7999" # default port range for 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 +{% endif %} + - "{{ awx_sdb_port_start }}:{{ awx_sdb_port_end }}" # sdb-listen links: - postgres - - redis + - redis_{{ container_postfix }} working_dir: "/awx_devel" volumes: - "../../../:/awx_devel" @@ -34,12 +38,21 @@ services: - "../../docker-compose/_sources/local_settings.py:/etc/tower/conf.d/local_settings.py" - "../../docker-compose/_sources/SECRET_KEY:/etc/tower/SECRET_KEY" - "../../docker-compose/receptor.conf:/etc/receptor/receptor.conf" - - "redis_socket:/var/run/redis/:rw" - "receptor:/var/run/receptor/" - "/sys/fs/cgroup:/sys/fs/cgroup" - "~/.kube/config:/var/lib/awx/.kube/config" + - "redis_socket_{{ container_postfix }}:/var/run/redis/:rw" privileged: true tty: true + redis_{{ container_postfix }}: + image: redis:latest + container_name: tools_redis_{{ container_postfix }} + volumes: + - "../../redis/redis.conf:/usr/local/etc/redis/redis.conf" + - "redis_socket_{{ container_postfix }}:/var/run/redis/:rw" + entrypoint: ["redis-server"] + command: ["/usr/local/etc/redis/redis.conf"] +{% endfor %} # A useful container that simply passes through log messages to the console # helpful for testing awx/tower logging # logstash: @@ -56,16 +69,26 @@ services: POSTGRES_PASSWORD: {{ pg_password }} volumes: - "awx_db:/var/lib/postgresql/data" - redis: - image: redis:latest - container_name: tools_redis_1 +{% if cluster_node_count|int > 1 %} + haproxy: + image: haproxy volumes: - - "../../redis/redis.conf:/usr/local/etc/redis/redis.conf" - - "redis_socket:/var/run/redis/:rw" - entrypoint: ["redis-server"] - command: ["/usr/local/etc/redis/redis.conf"] + - "../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: - redis_socket: receptor: +{% for i in range(cluster_node_count|int) -%} + {% set container_postfix = loop.index %} + redis_socket_{{ container_postfix }}: +{% endfor -%}