one-click-apps/public/v4/apps/airflow.yml

217 lines
9.4 KiB
YAML

captainVersion: 4
caproverOneClickApp:
instructions:
start: |-
Apache Airflow is a tool to express and execute workflows as directed acyclic graphs (DAGs).
It includes utilities to schedule tasks, monitor task progress and handle task dependencies.
This instance uses the Bitnami images
end: >
Airflow is deployed is deployed, it might take few moments before it's fully started.
Initial user is: $$cap_airflow_user with password $$cap_airflow_password.
Login on $$cap_appname.$$cap_root_domain after $$cap_appname has finished starting.
displayName: Airflow
isOfficial: false
description: A tool to express and execute workflows as directed acyclic graphs (DAGs).
documentation: |-
Based on https://github.com/bitnami/bitnami-docker-airflow#readme
variables:
# Postgress
- id: $$cap_postgresql_version
label: Bitnami's Posgresql Version
defaultValue: '12.12.0'
description: Check the tag version on https://hub.docker.com/r/bitnami/postgresql
- id: $$cap_postgresql_name
label: Postresql database name
defaultValue: airflow_db
description: Name of the postgresql db
- id: $$cap_postgresql_user
label: Postresql database user
defaultValue: airflow_db_user
description: Password to the postgresql db
- id: $$cap_postgresql_password
label: Postresql password
defaultValue: $$cap_gen_random_hex(16)
description: Password to the postgresql db
# Redis
- id: $$cap_redis_version
label: Bitnami's redis Version
defaultValue: '7.0.4'
description: Check the tag version on https://hub.docker.com/r/bitnami/redis
- id: $$cap_redis_password
label: Redis password
defaultValue: $$cap_gen_random_hex(16)
description: Password to redis db
# Airflow
- id: $$cap_airflow_version
label: Bitnami's airflow Version
defaultValue: '2.3.3'
description: Check the tag version on https://hub.docker.com/r/bitnami/airflow
- id: $$cap_airflow_worker_version
label: Bitnami's airflow worker Version
defaultValue: '2.3.3'
description: Check the tag version on https://hub.docker.com/r/bitnami/airflow-worker
- id: $$cap_airflow_scheduler_version
label: Bitnami's airflow scheduler Version
defaultValue: '2.3.3'
description: Check the tag version on https://hub.docker.com/r/bitnami/airflow-scheduler
- id: $$cap_airflow_user
label: Airflow user
defaultValue: 'airflow_user'
description: Airflow's Admin user name
- id: $$cap_airflow_password
label: Airflow password
defaultValue: $$cap_gen_random_hex(16)
description: Airflow Admin's password
- id: $$cap_airflow_email
label: Airflow email
description: Email address that will receive notifications from airflow (need SMPT details)
- id: $$cap_airflow_examples
label: Load Airflow DAG Examples?
defaultValue: 'no'
description: Wheter to load or not load sample DAGs (yes/no)
- id: $$cap_airflow_secret_key
label: Airflow Secret Key
defaultValue: $$cap_gen_random_hex(16)
description: Secret key used to run your flask app. It should be as random as possible.
- id: $$cap_airflow_dag_path
label: DAGs Volume
defaultValue: airflow-dags
description: Name of the DAG volume or Path to the custom DAGs folder, make sure the folder is accesible
- id: $$cap_airflow_py_requirements
label: Path or volume to a requirements.txt file
defaultValue: airflow-requstxt
description: Installation of additional python modules at start-up time, make sure the file is accesible
# SMTP datails
- id: $$cap_smtp_host
label: SMTP Host
description: Host for SMPT connection
- id: $$cap_smtp_port
label: SMTP Port
description: Port for SMPT connection
- id: $$cap_smtp_starttls
label: Use startTLS?
defaultValue: 'no'
description: Do you want to use startTLS? (yes/no)
- id: $$cap_smtp_ssl
label: Use SSL?
defaultValue: 'no'
description: Check the tag version on https://hub.docker.com/r/bitnami/airflow-scheduler
- id: $$cap_smtp_user
label: SMTP User
description: Check the tag version on https://hub.docker.com/r/bitnami/airflow-scheduler
- id: $$cap_smtp_password
label: SMTP Password
description: Check the tag version on https://hub.docker.com/r/bitnami/airflow-scheduler
- id: $$cap_smtp_mail_from
label: Mail from address
description: Specofy who the email is from
services:
$$cap_appname-db:
restart: always
image: 'bitnami/postgresql:$$cap_postgresql_version'
user:
environment:
POSTGRESQL_DATABASE: $$cap_postgresql_name
POSTGRESQL_USERNAME: $$cap_postgresql_user
POSTGRESQL_PASSWORD: $$cap_postgresql_password
volumes:
- $$cap_appname-postgresql-persistance:/bitnami
caproverExtra:
notExposeAsWebApp: true
$$cap_appname-redis:
restart: always
image: 'bitnami/redis:$$cap_redis_version'
user:
environment:
REDIS_PASSWORD: $$cap_redis_password
volumes:
- $$cap_appname-redis-persistance:/bitnami
caproverExtra:
notExposeAsWebApp: true
$$cap_appname:
restart: always
depends_on:
- $$cap_appname-db
- $$cap_appname-redis
image: 'bitnami/airflow:$$cap_airflow_version'
user:
environment:
AIRFLOW_EXECUTOR: CeleryExecutor
AIRFLOW_DATABASE_HOST: srv-captain--$$cap_appname-db
AIRFLOW_DATABASE_NAME: $$cap_postgresql_name
AIRFLOW_DATABASE_USERNAME: $$cap_postgresql_user
AIRFLOW_DATABASE_PASSWORD: $$cap_postgresql_password
REDIS_HOST: srv-captain--$$cap_appname-redis
REDIS_PASSWORD: $$cap_redis_password
AIRFLOW_WEBSERVER_HOST: srv-captain--$$cap_appname
AIRFLOW_BASE_URL: https://$$cap_appname.$$cap_root_domain/
AIRFLOW_SECRET_KEY: $$cap_airflow_secret_key
AIRFLOW_LOAD_EXAMPLES: $$cap_airflow_examples
AIRFLOW_USERNAME: $$cap_airflow_user
AIRFLOW_PASSWORD: $$cap_airflow_password
AIRFLOW_EMAIL: $$cap_airflow_email
AIRFLOW__SMTP__SMTP_HOST: $$cap_smtp_host
AIRFLOW__SMTP__SMTP_PORT: $$cap_smtp_port
AIRFLOW__SMTP__SMTP_STARTTLS: $$cap_smtp_starttls
AIRFLOW__SMTP__SMTP_SSL: $$cap_smtp_ssl
AIRFLOW__SMTP__SMTP_USER: $$cap_smtp_user
AIRFLOW__SMTP__SMTP_PASSWORD: $$cap_smtp_password
AIRFLOW__SMTP__SMTP_MAIL_FROM: $$cap_smtp_mail_from
volumes:
- $$cap_airflow_dag_path:/opt/bitnami/airflow/dags
- $$cap_airflow_py_requirements:/bitnami/python/requirements.txt
caproverExtra:
containerHttpPort: '8080'
$$cap_appname-worker:
image: bitnami/airflow-worker:$$cap_airflow_worker_version
depends_on:
- $$cap_appname
environment:
AIRFLOW_EXECUTOR: CeleryExecutor
AIRFLOW_DATABASE_HOST: srv-captain--$$cap_appname-db
AIRFLOW_DATABASE_NAME: $$cap_postgresql_name
AIRFLOW_DATABASE_USERNAME: $$cap_postgresql_user
AIRFLOW_DATABASE_PASSWORD: $$cap_postgresql_password
REDIS_HOST: srv-captain--$$cap_appname-redis
REDIS_PASSWORD: $$cap_redis_password
AIRFLOW_WEBSERVER_HOST: srv-captain--$$cap_appname
AIRFLOW_BASE_URL: https://$$cap_appname.$$cap_root_domain/
AIRFLOW_SECRET_KEY: $$cap_airflow_secret_key
AIRFLOW_LOAD_EXAMPLES: $$cap_airflow_examples
volumes:
- $$cap_appname-data:/opt/bitnami/airflow/data
- $$cap_airflow_dag_path:/opt/bitnami/airflow/dags
- $$cap_airflow_py_requirements:/bitnami/python/requirements.txt
caproverExtra:
notExposeAsWebApp: true
$$cap_appname-scheduler:
restart: always
depends_on:
- $$cap_appname
image: 'bitnami/airflow-scheduler:$$cap_airflow_scheduler_version'
user:
environment:
AIRFLOW_EXECUTOR: CeleryExecutor
AIRFLOW_DATABASE_HOST: srv-captain--$$cap_appname-db
AIRFLOW_DATABASE_NAME: $$cap_postgresql_name
AIRFLOW_DATABASE_USERNAME: $$cap_postgresql_user
AIRFLOW_DATABASE_PASSWORD: $$cap_postgresql_password
REDIS_HOST: srv-captain--$$cap_appname-redis
REDIS_PASSWORD: $$cap_redis_password
AIRFLOW_WEBSERVER_HOST: srv-captain--$$cap_appname
AIRFLOW_BASE_URL: https://$$cap_appname.$$cap_root_domain/
AIRFLOW_SECRET_KEY: $$cap_airflow_secret_key
AIRFLOW_LOAD_EXAMPLES: $$cap_airflow_examples
volumes:
- $$cap_airflow_dag_path:/opt/bitnami/airflow/dags
- $$cap_airflow_py_requirements:/bitnami/python/requirements.txt
caproverExtra:
notExposeAsWebApp: true