mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-10 15:22:24 -05:00
all apps get a route assigned when using v3-zdt-push. > By default, the web process has a route and one instance. Other processes have zero instances by default. ([source](https://docs.cloudfoundry.org/devguide/multiple-processes.html)) When we push apps to multiple environments they need different routes or the second push will fail, so this means that we need to define routes ourselves for every app. We're also manually flagging the health-check as either "http" or "process" - http for the api, process for all others. If not specified, healthcheck is set to `port` by cloudfoundry - we've seen some issues with upgrading the deployment from v2 to v3 when using port - it adds apps to load balancer when they're not ready, which can result in 404s. by setting healthcheck to http it'll wait for the /status endpoint to return 200, which will wait for flask to get everything up and running properly
104 lines
3.7 KiB
Django/Jinja
104 lines
3.7 KiB
Django/Jinja
{%- set app_vars = {
|
|
'notify-api': {'NOTIFY_APP_NAME': 'api', 'disk_quota': '2G', 'sqlalchemy_pool_size': 20, 'routes': {
|
|
'preview': ['api.notify.works'],
|
|
'staging': ['api.staging-notify.works'],
|
|
'production': ['api.notifications.service.gov.uk'],
|
|
},
|
|
'healthcheck-endpoint': '/_status?simple=true',
|
|
},
|
|
'notify-api-db-migration': {'NOTIFY_APP_NAME': 'api', 'instances': 0},
|
|
|
|
'notify-delivery-celery-beat': {'memory': '128M'},
|
|
'notify-delivery-worker-jobs': {},
|
|
'notify-delivery-worker-research': {'local_statsd': ['preview', 'staging']},
|
|
'notify-delivery-worker-sender': {'disk_quota': '2G', 'memory': '3G', 'local_statsd': ['preview', 'staging']},
|
|
'notify-delivery-worker-periodic': {},
|
|
'notify-delivery-worker-priority': {},
|
|
'notify-delivery-worker-letters': {},
|
|
'notify-delivery-worker-retry-tasks': {},
|
|
'notify-delivery-worker-internal': {},
|
|
'notify-delivery-worker-receipts': {},
|
|
'notify-delivery-worker-service-callbacks': {'disk_quota': '2G'},
|
|
} -%}
|
|
|
|
{%- set app = app_vars[CF_APP] -%}
|
|
|
|
---
|
|
|
|
applications:
|
|
- name: {{ CF_APP }}
|
|
buildpack: python_buildpack
|
|
{% if 'instances' in app %}
|
|
instances: {{ app['instances'] }}
|
|
{%- endif %}
|
|
memory: {{ app.get('memory', '1G') }}
|
|
disk_quota: {{ app.get('disk_quota', '1G')}}
|
|
|
|
routes:
|
|
{%- for route in app.get('routes', {}).get(environment, []) %}
|
|
- route: {{ route }}
|
|
{%- endfor%}
|
|
- route: {{ CF_APP }}-{{ environment }}.cloudapps.digital
|
|
{% if 'healthcheck-endpoint' in app %}
|
|
health-check-type: http
|
|
health-check-http-endpoint: {{ app['healthcheck-endpoint'] }}
|
|
{% else %}
|
|
health-check-type: process
|
|
{% endif %}
|
|
|
|
services:
|
|
- notify-db
|
|
- logit-ssl-syslog-drain
|
|
{% if environment in app.get('local_statsd', []) -%}
|
|
- notify-prometheus
|
|
{% endif %}
|
|
|
|
env:
|
|
NOTIFY_APP_NAME: {{ app.get('NOTIFY_APP_NAME', CF_APP.replace('notify-', '')) }}
|
|
SQLALCHEMY_POOL_SIZE: {{ app.get('sqlalchemy_pool_size', 1) }}
|
|
FLASK_APP: application.py
|
|
|
|
# Credentials variables
|
|
ADMIN_BASE_URL: '{{ ADMIN_BASE_URL }}'
|
|
ADMIN_CLIENT_SECRET: '{{ ADMIN_CLIENT_SECRET }}'
|
|
API_HOST_NAME: '{{ API_HOST_NAME }}'
|
|
DANGEROUS_SALT: '{{ DANGEROUS_SALT }}'
|
|
SECRET_KEY: '{{ SECRET_KEY }}'
|
|
ROUTE_SECRET_KEY_1: '{{ ROUTE_SECRET_KEY_1 }}'
|
|
ROUTE_SECRET_KEY_2: '{{ ROUTE_SECRET_KEY_2 }}'
|
|
CRONITOR_KEYS: '{{ CRONITOR_KEYS | tojson }}'
|
|
|
|
PERFORMANCE_PLATFORM_ENDPOINTS: '{{ PERFORMANCE_PLATFORM_ENDPOINTS | tojson }}'
|
|
|
|
DOCUMENT_DOWNLOAD_API_HOST: '{{ DOCUMENT_DOWNLOAD_API_HOST }}'
|
|
DOCUMENT_DOWNLOAD_API_KEY: '{{ DOCUMENT_DOWNLOAD_API_KEY }}'
|
|
|
|
NOTIFICATION_QUEUE_PREFIX: '{{ NOTIFICATION_QUEUE_PREFIX }}'
|
|
AWS_ACCESS_KEY_ID: '{{ AWS_ACCESS_KEY_ID }}'
|
|
AWS_SECRET_ACCESS_KEY: '{{ AWS_SECRET_ACCESS_KEY }}'
|
|
|
|
{% if environment in app.get('local_statsd', []) %}
|
|
STATSD_HOST: "localhost"
|
|
STATSD_PREFIX: ""
|
|
{% else %}
|
|
STATSD_HOST: "statsd.hostedgraphite.com"
|
|
STATSD_PREFIX: '{{ STATSD_PREFIX }}'
|
|
{% endif %}
|
|
|
|
ZENDESK_API_KEY: '{{ ZENDESK_API_KEY }}'
|
|
|
|
MMG_URL: '{{ MMG_URL }}'
|
|
MMG_API_KEY: '{{ MMG_API_KEY }}'
|
|
MMG_INBOUND_SMS_AUTH: '{{ MMG_INBOUND_SMS_AUTH | tojson }}'
|
|
MMG_INBOUND_SMS_USERNAME: '{{ MMG_INBOUND_SMS_USERNAME | tojson }}'
|
|
|
|
FIRETEXT_API_KEY: '{{ FIRETEXT_API_KEY }}'
|
|
LOADTESTING_API_KEY: '{{ LOADTESTING_API_KEY }}'
|
|
FIRETEXT_INBOUND_SMS_AUTH: '{{ FIRETEXT_INBOUND_SMS_AUTH | tojson }}'
|
|
|
|
REDIS_ENABLED: '{{ REDIS_ENABLED }}'
|
|
REDIS_URL: '{{ REDIS_URL }}'
|
|
|
|
TEMPLATE_PREVIEW_API_HOST: '{{ TEMPLATE_PREVIEW_API_HOST }}'
|
|
TEMPLATE_PREVIEW_API_KEY: '{{ TEMPLATE_PREVIEW_API_KEY }}'
|