No Windows:
Abra o Ubuntu (WSL) e rode:
sudo apt update && sudo apt upgrade -y
mkdir airflow-docker && cd airflow-docker
Estando no diretório airflow-docker Execute o comando abaixo:
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/3.0.5/docker-compose.yaml'
mkdir -p ./dags ./logs ./plugins ./config
echo -e "AIRFLOW_UID=$(id -u)" > .env
docker compose up airflow-init
docker compose up -d
docker compose run airflow-webserver airflow users create \
--username admin \
--firstname GSERV \
--lastname Test \
--role Admin \
--email gserv@airflow.local \
--password admin
Abra no navegador:
http://localhost:8080
Usuário e senha conforme criado acima.
Ativar Flower no docker-compose.yaml
Adicione ao docker-compose.yaml:
flower:
image: apache/airflow:3.0.5
restart: always
depends_on:
- redis
environment:
- AIRFLOW__CORE__EXECUTOR=CeleryExecutor
ports:
- "5555:5555"
command: celery flower
Acesse em:
http://localhost:5555
Crie um arquivo em: dags/hello_world.py:
from airflow import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime
with DAG(
dag_id="hello_world",
start_date=datetime(2024, 1, 1),
schedule="@daily",
catchup=False,
) as dag:
task = BashOperator(
task_id="say_hello",
bash_command="echo 'Hello, Airflow!'"
)
Uma DAG (Directed Acyclic Graph) no Airflow é um conjunto de tarefas organizadas em dependências que definem como e quando elas serão executadas.
No exemplo abaixo, criamos uma DAG simples que apenas imprime uma mensagem no terminal.
# Importa as bibliotecas necessárias
from airflow import DAG # Classe principal para definir uma DAG
from airflow.operators.bash import BashOperator # Operador que executa comandos Bash
from datetime import datetime # Usado para definir a data de início
# Definição da DAG
with DAG(
dag_id="hello_world", # Identificador único da DAG
start_date=datetime(2024, 1, 1), # Data de início do agendamento da DAG
schedule="@daily", # Frequência de execução (a cada dia)
catchup=False, # Impede execução retroativa de datas passadas
) as dag:
# Definição de uma tarefa usando BashOperator
task = BashOperator(
task_id="say_hello", # Nome único da tarefa
bash_command="echo 'Hello, Airflow!'" # Comando Bash que será executado
)
Essa DAG (hello_world) roda diariamente, começando em 01/01/2024, executando apenas uma tarefa: imprimir no log a frase «Hello, Airflow!».
«Uma DAG bem construída não é apenas um fluxo de tarefas, mas o mapa que transforma dados brutos em decisões inteligentes.»