Passa al contenuto principale
Versione: 0.5.6

Apache Airflow on Aruba Cloud

Deploy Apache Airflow — the leading open-source platform for authoring, scheduling, and monitoring data pipelines — on Aruba Cloud using Terraform and cloud-init. Uses Managed MySQL 8.0 as the metadata database and gunicorn behind nginx.

Provider version: arubacloud/arubacloud ~> 1.0 | Terraform: ≥ 1.9


Introduction​

This example deploys:

  • Apache Airflow (pip, native install) with the LocalExecutor on a CSO4A8 VM
  • Managed MySQL 8.0 (Aruba Cloud DBaaS) for Airflow metadata
  • nginx reverse proxy on port 80
  • Pre-created admin user via airflow users create
  • DAGs loaded from /opt/airflow/dags/ on the VM
  • Optional HTTPS via Actalis ACME Certificates or Let's Encrypt when a custom domain is provided

Architecture Overview​


Variables​

Required​

VariableDescription
arubacloud_client_idArubaCloud OAuth2 client ID
arubacloud_client_secretArubaCloud OAuth2 client secret

Optional​

VariableDefaultDescription
app_name"airflow"Short name used in resource names (2–8 chars)
environment"prod"Environment label
location"ITBG-Bergamo"ArubaCloud region
zone"ITBG-1"Availability zone
billing_period"Hour""Hour" or "Month"
vm_flavor"CSO4A8"CloudServer flavor — 4 vCPU / 8 GB recommended minimum
vm_disk_size_gb60Boot disk size — DAG files and logs stored here
ssh_public_keyproject owner keySSH public key content
ssh_cidr"0.0.0.0/0"CIDR for SSH access
dbaas_flavor"DBO2A8"Managed MySQL flavor
db_storage_gb20DBaaS initial storage in GB
db_passwordpre-set defaultMySQL password (min 8 chars, no newlines)
airflow_admin_user"admin"Airflow admin username
airflow_admin_passwordpre-set defaultAirflow admin password (min 8 chars, no newlines)
airflow_admin_email"admin@example.com"Airflow admin email
airflow_version"2.10.4"Apache Airflow version to install
domain""Custom domain for HTTPS (e.g. airflow.example.com); leave empty for HTTP over Elastic IP
acme_eab_kid""Actalis ACME EAB key ID; leave empty to fall back to Let's Encrypt
acme_eab_hmac_key""Actalis ACME EAB HMAC key; required when acme_eab_kid is set

Outputs​

OutputDescription
airflow_urlAirflow web interface URL
vm_public_ipPublic IP of the VM
ssh_commandSSH command to connect
airflow_admin_passwordAirflow admin password (sensitive)

Deployment Instructions​

1. Clone and navigate​

git clone https://github.com/arubacloud/terraform-arubacloud-examples.git
cd terraform-arubacloud-examples/airflow

2. Configure variables​

cp terraform.tfvars.example terraform.tfvars

3. Deploy​

terraform init
terraform plan
terraform apply

Bootstrap takes approximately 10–15 minutes.

4. Access Airflow​

Navigate to http://<vm_public_ip> and log in with airflow_admin_user / airflow_admin_password.

5. Deploy DAGs​

Copy DAG files to the VM:

scp my_dag.py ubuntu@<vm_public_ip>:/opt/airflow/dags/

Airflow picks up new DAGs automatically within the configured scan interval.


References​