Add optional pgbouncer to dev environment (#14083)

Signed-off-by: Rick Elrod <rick@elrod.me>
This commit is contained in:
Rick Elrod
2023-07-05 13:41:47 -05:00
committed by GitHub
parent 3624fe2cac
commit 4a34ee1f1e
4 changed files with 32 additions and 0 deletions

View File

@@ -27,6 +27,8 @@ COLLECTION_TEMPLATE_VERSION ?= false
# NOTE: This defaults the container image version to the branch that's active # NOTE: This defaults the container image version to the branch that's active
COMPOSE_TAG ?= $(GIT_BRANCH) COMPOSE_TAG ?= $(GIT_BRANCH)
MAIN_NODE_TYPE ?= hybrid MAIN_NODE_TYPE ?= hybrid
# If set to true docker-compose will also start a pgbouncer instance and use it
PGBOUNCER ?= false
# If set to true docker-compose will also start a keycloak instance # If set to true docker-compose will also start a keycloak instance
KEYCLOAK ?= false KEYCLOAK ?= false
# If set to true docker-compose will also start an ldap instance # If set to true docker-compose will also start an ldap instance
@@ -522,6 +524,7 @@ docker-compose-sources: .git/hooks/pre-commit
-e control_plane_node_count=$(CONTROL_PLANE_NODE_COUNT) \ -e control_plane_node_count=$(CONTROL_PLANE_NODE_COUNT) \
-e execution_node_count=$(EXECUTION_NODE_COUNT) \ -e execution_node_count=$(EXECUTION_NODE_COUNT) \
-e minikube_container_group=$(MINIKUBE_CONTAINER_GROUP) \ -e minikube_container_group=$(MINIKUBE_CONTAINER_GROUP) \
-e enable_pgbouncer=$(PGBOUNCER) \
-e enable_keycloak=$(KEYCLOAK) \ -e enable_keycloak=$(KEYCLOAK) \
-e enable_ldap=$(LDAP) \ -e enable_ldap=$(LDAP) \
-e enable_splunk=$(SPLUNK) \ -e enable_splunk=$(SPLUNK) \

View File

@@ -35,3 +35,8 @@ enable_splunk: false
enable_grafana: false enable_grafana: false
enable_prometheus: false enable_prometheus: false
scrape_interval: '5s' scrape_interval: '5s'
# pgbouncer
enable_pgbouncer: false
pgbouncer_port: 6432
pgbouncer_max_pool_size: 70

View File

@@ -5,7 +5,12 @@ DATABASES = {
'NAME': "{{ pg_database }}", 'NAME': "{{ pg_database }}",
'USER': "{{ pg_username }}", 'USER': "{{ pg_username }}",
'PASSWORD': "{{ pg_password }}", 'PASSWORD': "{{ pg_password }}",
{% if enable_pgbouncer|bool %}
'HOST': "pgbouncer",
'PORT': "{{ pgbouncer_port }}",
{% else %}
'HOST': "{{ pg_hostname | default('postgres') }}", 'HOST': "{{ pg_hostname | default('postgres') }}",
'PORT': "{{ pg_port }}", 'PORT': "{{ pg_port }}",
{% endif %}
} }
} }

View File

@@ -201,6 +201,25 @@ services:
POSTGRES_PASSWORD: {{ pg_password }} POSTGRES_PASSWORD: {{ pg_password }}
volumes: volumes:
- "awx_db:/var/lib/postgresql/data" - "awx_db:/var/lib/postgresql/data"
{% if enable_pgbouncer|bool %}
pgbouncer:
image: bitnami/pgbouncer:latest
container_name: tools_pgbouncer_1
hostname: pgbouncer
environment:
POSTGRESQL_USERNAME: {{ pg_username }}
POSTGRESQL_DATABASE: {{ pg_database }}
PGBOUNCER_DATABASE: {{ pg_database }}
POSTGRESQL_PASSWORD: {{ pg_password }}
POSTGRESQL_HOST: {{ pg_hostname | default('postgres') }}
POSTGRESQL_PORT: {{ pg_port }}
PGBOUNCER_AUTH_TYPE: trust
PGBOUNCER_PORT: {{ pgbouncer_port }}
PGBOUNCER_DEFAULT_POOL_SIZE: {{ pgbouncer_max_pool_size }}
# This is the default, but we're being explicit here because it's important:
# pg_notify will NOT work in transaction mode.
PGBOUNCER_POOL_MODE: session
{% endif %}
{% if execution_node_count|int > 0 %} {% if execution_node_count|int > 0 %}
receptor-hop: receptor-hop:
image: {{ receptor_image }} image: {{ receptor_image }}