Skip to content

Instantly share code, notes, and snippets.

@mkanoor
Created February 12, 2025 19:49
Show Gist options
  • Select an option

  • Save mkanoor/05dd9420f729f03d64753ca499845449 to your computer and use it in GitHub Desktop.

Select an option

Save mkanoor/05dd9420f729f03d64753ca499845449 to your computer and use it in GitHub Desktop.
docker compose envoy with eda
x-environment:
&common-env
- EDA_DB_HOST=postgres
- EDA_MQ_HOST=${EDA_MQ_HOST:-redis}
- EDA_MQ_PORT=${EDA_MQ_PORT:-6379}
- EDA_MQ_REDIS_HA_CLUSTER_HOSTS=${EDA_MQ_REDIS_HA_CLUSTER_HOSTS:-}
- DJANGO_SETTINGS_MODULE=aap_eda.settings.default
- EDA_DB_PASSWORD=secret
- EDA_SECRET_KEY=secret
- EDA_ALLOWED_HOSTS=['*']
- EDA_DEPLOYMENT_TYPE=podman
- EDA_WEBSOCKET_BASE_URL=${EDA_WEBSOCKET_BASE_URL:-wss://host.containers.internal:8443}
- EDA_WEBSOCKET_SSL_VERIFY=no
- EDA_PODMAN_SOCKET_URL="unix:///run/podman/podman.sock"
- EDA_CONTROLLER_URL=${EDA_CONTROLLER_URL:-https://awx-example.com}
- EDA_CONTROLLER_SSL_VERIFY=${EDA_CONTROLLER_SSL_VERIFY:-yes}
- EDA_PROTOCOL=http
- EDA_HOST=${EDA_HOST:-eda-api:8000}
- EDA_SERVER=http://${EDA_HOST:-eda-api:8000}
- EDA_ANSIBLE_RULEBOOK_LOG_LEVEL=${EDA_ANSIBLE_RULEBOOK_LOG_LEVEL:-'-v'}
- EDA_CONTAINER_NAME_PREFIX=${EDA_CONTAINER_NAME_PREFIX:-eda}
- EDA_PODMAN_ENV_VARS=${EDA_PODMAN_ENV_VARS:-'@none None'}
- EDA_MAX_RUNNING_ACTIVATIONS=${EDA_MAX_RUNNING_ACTIVATIONS:-5}
- EDA_ACTIVATION_RESTART_SECONDS_ON_COMPLETE=${EDA_ACTIVATION_RESTART_SECONDS_ON_COMPLETE:-60}
- EDA_ACTIVATION_RESTART_SECONDS_ON_FAILURE=${EDA_ACTIVATION_RESTART_SECONDS_ON_FAILURE:-60}
- EDA_ANSIBLE_BASE_JWT_VALIDATE_CERT=${EDA_ANSIBLE_BASE_JWT_VALIDATE_CERT:-False}
- EDA_ANSIBLE_BASE_JWT_KEY=${EDA_ANSIBLE_BASE_JWT_KEY:-'https://localhost'}
- EDA_DEBUG=${EDA_DEBUG:-True}
- EDA_ALLOW_LOCAL_RESOURCE_MANAGEMENT=${EDA_ALLOW_LOCAL_RESOURCE_MANAGEMENT:-True}
- EDA_ALLOW_LOCAL_ASSIGNING_JWT_ROLES=${EDA_ALLOW_LOCAL_ASSIGNING_JWT_ROLES:-True}
- EDA_ALLOW_SHARED_RESOURCE_CUSTOM_ROLES=${EDA_ALLOW_SHARED_RESOURCE_CUSTOM_ROLES:-True}
- EDA_ANSIBLE_RULEBOOK_FLUSH_AFTER=${EDA_ANSIBLE_RULEBOOK_FLUSH_AFTER:-100}
- EDA_DEFAULT_QUEUE_TIMEOUT=${EDA_DEFAULT_QUEUE_TIMEOUT:-300}
- EDA_DEFAULT_RULEBOOK_QUEUE_TIMEOUT=${EDA_DEFAULT_RULEBOOK_QUEUE_TIMEOUT:-120}
- EDA_RESOURCE_SERVER__URL=${EDA_RESOURCE_SERVER__URL:-'@none None'}
- EDA_RESOURCE_SERVER__SECRET_KEY=${EDA_RESOURCE_SERVER__SECRET_KEY:-'@none None'}
- EDA_RESOURCE_SERVER__VALIDATE_HTTPS=${EDA_RESOURCE_SERVER__VALIDATE_HTTPS:-False}
- EDA_RESOURCE_JWT_USER_ID=${EDA_RESOURCE_JWT_USER_ID:-'@none None'}
- EDA_ANSIBLE_BASE_MANAGED_ROLE_REGISTRY=${EDA_ANSIBLE_BASE_MANAGED_ROLE_REGISTRY:-@json {}}
- EDA_SERVER_UUID=edgecafe-beef-feed-fade-decadeedgecafe
- EDA_PG_NOTIFY_DSN="host=host.containers.internal port=5432 dbname=eda user=postgres password=secret"
- EDA_PG_NOTIFY_DSN_SERVER="host=postgres port=5432 dbname=eda user=postgres password=secret"
- EDA_EVENT_STREAM_BASE_URL=${EDA_EVENT_STREAM_BASE_URL:-https://localhost:8443/my_event_stream/}
- EDA_EVENT_STREAM_MTLS_BASE_URL=${EDA_EVENT_STREAM_MTLS_BASE_URL:-https://localhost:8443/mtls/edgecafe-beef-feed-fade-decadeedgecafe/}
- EDA_WEBHOOK_HOST=${EDA_WEBHOOK_HOST:-eda-webhook-api:8000}
- EDA_WEBHOOK_SERVER=http://${EDA_WEBHOOK_HOST:-eda-webhook-api:8000}
- EDA_STATIC_URL=${EDA_STATIC_URL:-api/eda/v1/static/}
- SSL_CERTIFICATE=${SSL_CERTIFICATE:-/certs/wildcard.crt}
- SSL_CERTIFICATE_KEY=${SSL_CERTIFICATE_KEY:-/certs/wildcard.key}
- SSL_CLIENT_CERTIFICATE=${SSL_CLIENT_CERTIFICATE:-/certs/client.crt}
services:
postgres:
image: ${EDA_POSTGRES_IMAGE:-quay.io/sclorg/postgresql-15-c9s}:${EDA_POSTGRES_VERSION:-latest}
environment:
POSTGRESQL_USER: eda
POSTGRESQL_PASSWORD: secret
POSTGRESQL_ADMIN_PASSWORD: secret
POSTGRESQL_DATABASE: eda
ports:
- '${EDA_PG_PORT:-5432}:5432'
volumes:
- 'postgres_data:/var/lib/pgsql/data'
healthcheck:
test: [ 'CMD', 'pg_isready', '-U', 'postgres' ]
interval: 5s
timeout: 5s
retries: 3
start_period: 5s
redis:
image: ${EDA_REDIS_IMAGE:-mirror.gcr.io/library/redis}:${EDA_REDIS_VERSION:-6.2.14}
ports:
- '${EDA_REDIS_PORT:-6379}:6379'
healthcheck:
test: [ 'CMD', 'redis-cli', 'ping' ]
interval: 5s
timeout: 5s
retries: 3
start_period: 5s
eda-api:
image: ${EDA_IMAGE:-quay.io/ansible/eda-server}:${EDA_IMAGE_VERSION:-main}
environment: *common-env
security_opt:
- label=disable
command:
- /bin/bash
- -c
- >-
aap-eda-manage migrate
&& ANSIBLE_REVERSE_RESOURCE_SYNC=false aap-eda-manage create_initial_data
&& ANSIBLE_REVERSE_RESOURCE_SYNC=false scripts/create_superuser.sh
&& aap-eda-manage runserver 0.0.0.0:8001
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy
healthcheck:
test: [ 'CMD', 'curl', '-q', 'http://localhost:8001/_healthz' ]
interval: 30s
timeout: 5s
retries: 10
volumes:
- ${EDA_HOST_PODMAN_SOCKET_URL:-/run/user/501/podman/podman.sock}:/run/podman/podman.sock:z
eda-ws:
image: ${EDA_IMAGE:-quay.io/ansible/eda-server}:${EDA_IMAGE_VERSION:-main}
environment: *common-env
command:
- /bin/bash
- -c
- >-
aap-eda-manage runserver 0.0.0.0:8002
depends_on:
eda-api:
condition: service_healthy
eda-default-worker:
user: "${EDA_POD_USER_ID:-0}"
image: ${EDA_IMAGE:-quay.io/ansible/eda-server}:${EDA_IMAGE_VERSION:-main}
deploy:
replicas: ${EDA_DEFAULT_WORKERS:-1}
environment: *common-env
security_opt:
- label=disable
command:
- /bin/bash
- -c
- >-
aap-eda-manage rqworker
--worker-class aap_eda.core.tasking.DefaultWorker
depends_on:
eda-api:
condition: service_healthy
restart: always
volumes:
- ${EDA_HOST_PODMAN_SOCKET_URL:-/run/user/501/podman/podman.sock}:/run/podman/podman.sock:z
eda-activation-worker:
user: "${EDA_POD_USER_ID:-0}"
image: ${EDA_IMAGE:-quay.io/ansible/eda-server}:${EDA_IMAGE_VERSION:-main}
deploy:
replicas: ${EDA_ACTIVATION_WORKERS:-2}
environment: *common-env
security_opt:
- label=disable
command:
- /bin/bash
- -c
- >-
aap-eda-manage rqworker
--worker-class aap_eda.core.tasking.ActivationWorker
depends_on:
eda-api:
condition: service_healthy
restart: always
volumes:
- ${EDA_HOST_PODMAN_SOCKET_URL:-/run/user/501/podman/podman.sock}:/run/podman/podman.sock:z
eda-scheduler:
image: ${EDA_IMAGE:-quay.io/ansible/eda-server}:${EDA_IMAGE_VERSION:-main}
environment: *common-env
command:
- /bin/bash
- -c
- >-
aap-eda-manage scheduler
depends_on:
eda-api:
condition: service_healthy
restart: always
eda-es:
image: ${EDA_IMAGE:-quay.io/ansible/eda-server}:${EDA_IMAGE_VERSION:-main}
environment: *common-env
security_opt:
- label=disable
command:
- /bin/bash
- -c
- >-
aap-eda-manage runserver 0.0.0.0:8003
depends_on:
eda-api:
condition: service_healthy
healthcheck:
test: [ 'CMD', 'curl', '-q', 'http://0.0.0.0:8003/_healthz' ]
interval: 30s
timeout: 5s
retries: 10
start_period: 15s
squid:
image: ${EDA_SQUID_IMAGE:-quay.io/openshifttest/squid-proxy}:${EDA_SQUID_VERSION:-1.2.0}
profiles:
- proxy
hostname: squid
volumes:
- ./squid/squid.conf:/etc/squid/squid.conf
- ./squid/htpass:/etc/squid/htpass
ports:
- '${EDA_PROXY_PORT:-3128}:3128'
eda-ui:
image: ${EDA_UI_IMAGE:-quay.io/ansible/eda-ui:main}
environment: *common-env
ports:
- '${EDA_UI_PORT:-8443}:443'
volumes:
- './my_certs:/tmp/my_certs:z'
- './nginx/certs:/certs:z'
- './nginx/default.conf.template:/etc/nginx/templates/default.conf.template:z'
depends_on:
eda-es:
condition: service_healthy
eda-proxy:
container_name: eda_proxy1
hostname: eda_proxy1
image: brew.registry.redhat.io/rh-osbs/ansible-automation-platform-25-gateway-proxy-rhel8
entrypoint: /usr/bin/envoy
command: --config-path /etc/envoy/envoy.yaml --log-level debug
environment:
- ENVOY_UID=0
- XENVOY_LOG_LEVEL=trace
ports:
- "8010:9080"
- "19001:19000"
volumes:
- ./aap-gateway/tools/generated/eda_envoy.yml:/etc/envoy/envoy.yaml:z
- ./aap-gateway/tools/scripts/envoy-path-rewrite.lua:/etc/envoy/envoy-path-rewrite.lua:z
- ./aap-gateway/tools/generated/gateway.crt:/etc/ansible-automation-platform/gateway/gateway.crt:Z
- ./aap-gateway/tools/generated/gateway.key:/etc/ansible-automation-platform/gateway/gateway.key:Z
volumes:
postgres_data: {}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment