Guide de référence de la CLI Apache Airflow

@joekakone

Joseph Konka @joekakone

03/03/2026 · 10 min

Maîtrisez les commandes indispensables de l'interface en ligne de commande (CLI) d'Airflow pour administrer, tester unitairement, déboguer et automatiser vos pipelines.

L'interface graphique d'Airflow est idéale pour observer vos flux au quotidien. Cependant, pour diagnostiquer des pannes critiques, réaliser des tests unitaires en cours de développement ou automatiser le déploiement de secrets dans vos pipelines d'intégration continue (CI/CD), la ligne de commande (CLI - Command Line Interface) est un outil incontournable.


1. Accéder à la CLI sous Docker#

Dans une architecture déployée avec Docker Compose, vous devez exécuter les commandes à l'intérieur de l'un des conteneurs Airflow (le webserver ou le scheduler) :

# Ouvrir une session interactive Bash dans le conteneur du webserver
docker compose exec airflow-webserver bash

# Ou exécuter une commande ponctuelle directement depuis votre machine hôte :
docker compose exec airflow-webserver airflow info

2. Commandes de diagnostic et configuration système#

Ces commandes permettent de contrôler la santé de votre cluster et de vérifier la résolution des variables d'environnement.

flowchart LR
    A["airflow info"] --> B["Affiche la version, les chemins DAGS_FOLDER et la base SQL"]
    C["airflow config list"] --> D["Liste tous les paramètres effectifs de airflow.cfg"]
    E["airflow cheat-sheet"] --> F["Aide-mémoire rapide des commandes usuelles"]
    style A fill:#e0f2fe,stroke:#0284c7,color:#0f172a
    style C fill:#fef3c7,stroke:#d97706,color:#0f172a
    style E fill:#dcfce7,stroke:#16a34a,color:#0f172a

airflow info#

Fournit une fiche d'identité complète de votre installation : version du noyau Airflow, version de Python, système d'exploitation hôte, type d'exécuteur (Celery, Local, Sequential) et paramètres de connexion à la base de métadonnées.

airflow info

airflow config list#

Affiche l'intégralité des configurations actives, en résolvant les priorités entre les fichiers de configuration par défaut, les variables airflow.cfg et les variables d'environnement AIRFLOW__*.


3. Gestion et pilotage des DAGs#

Lister et inspecter les DAGs#

# Lister tous les DAGs détectés et leur statut (actif ou en pause)
airflow dags list

# Afficher le rapport d'analyse syntaxique (durée de parsing et erreurs Python éventuelles)
airflow dags report

# Vérifier la structure d'un DAG au format texte ou DOT (Graphviz)
airflow dags show etl_covid19_daily

Déclencher, suspendre et reprendre des DAGs#

# Déclencher immédiatement une exécution avec la date actuelle
airflow dags trigger etl_covid19_daily

# Déclencher en injectant un paramètre JSON
airflow dags trigger etl_covid19_daily --conf '{"mode": "manuel", "force_reload": true}'

# Déclencher avec une date logique spécifique
airflow dags trigger etl_covid19_daily -e 2026-02-15

# Activer ou suspendre un DAG
airflow dags unpause etl_covid19_daily
airflow dags pause etl_covid19_daily

Supprimer un DAG du catalogue#

# Supprime l'historique et les métadonnées du DAG dans la base (ne supprime pas le fichier .py)
airflow dags delete etl_covid19_daily --yes

4. Gestion et débogage unitaire des Tâches#

C'est la famille de commandes la plus précieuse pour le Data Engineer lors du développement quotidien.

Tester une tâche en isolation (tasks test)#

La commande tasks test exécute la logique de votre opérateur sans vérifier les dépendances amont et sans enregistrer d'état dans la base de données. Tous les print() et journaux de logs s'affichent instantanément dans votre terminal :

# Syntaxe : airflow tasks test <dag_id> <task_id> <logical_date>
airflow tasks test etl_covid19_daily transformer_donnees 2026-03-01

Prévisualiser les templates Jinja (tasks render)#

Avant d'exécuter une requête SQL contenant des variables de dates dynamiques (comme {{ ds }} ou {{ execution_date }}), vous pouvez prévisualiser la chaîne finale résolue :

airflow tasks render etl_covid19_daily creer_table 2026-03-01

Réinitialiser et relancer des tâches (tasks clear)#

Permet de relancer une tâche échouée sur une plage temporelle donnée :

# Réinitialise la tâche sur tout le mois de janvier 2026
airflow tasks clear \
    --task-regex transformer_donnees \
    --start-date 2026-01-01 \
    --end-date 2026-01-31 \
    --yes \
    etl_covid19_daily

5. Administration des Connexions et des Variables (CI/CD)#

Pour éviter de devoir saisir à la main des dizaines de connexions lors de l'initialisation d'un nouvel environnement, la CLI permet d'importer et d'exporter vos secrets en masse.

flowchart LR
    A["Fichier secrets.json / connections.yaml"] -->|airflow connections import| B["Base de Métadonnées Airflow"]
    B -->|airflow connections export| C["Fichier chiffré de sauvegarde"]
    style A fill:#f1f5f9,stroke:#475569
    style B fill:#e0f2fe,stroke:#0284c7,stroke-width:2px,color:#0f172a
    style C fill:#dcfce7,stroke:#16a34a,color:#0f172a

Gérer les connexions aux bases de données#

# Lister les connexions actives
airflow connections list

# Créer une nouvelle connexion PostgreSQL en ligne de commande
airflow connections add 'postgres_analytics' \
    --conn-type 'postgres' \
    --conn-host 'postgres.internal.net' \
    --conn-login 'bi_user' \
    --conn-password 'SecretPassword123' \
    --conn-schema 'dw_production' \
    --conn-port 5432

# Exporter toutes les connexions dans un fichier JSON (pour backup ou migration)
airflow connections export mes_connexions.json --format json

# Importer des connexions depuis un fichier
airflow connections import mes_connexions.json

Gérer les Variables globales#

# Définir une variable
airflow variables set SEUIL_ALERTE_REJET 50

# Récupérer la valeur d'une variable
airflow variables get SEUIL_ALERTE_REJET

# Exporter et importer toutes les variables
airflow variables export variables_prod.json
airflow variables import variables_prod.json

6. Maintenance de la base de données de métadonnées#

Dans un environnement de production qui tourne depuis plusieurs mois, les tables de logs et d'historique de tâches peuvent accumuler des millions de lignes et ralentir le Scheduler.

# Vérifier la connexion avec la base de données PostgreSQL
airflow db check

# Appliquer les migrations de schéma après une mise à jour d'Airflow
airflow db migrate

# Purger l'historique et les logs antérieurs à une date donnée (Ménage automatique)
airflow db clean --clean-before-timestamp '2025-06-01 00:00:00' --yes

Récapitulatif des commandes indispensables#

Opération métier Commande CLI associée
Tester une tâche isolée airflow tasks test <dag_id> <task_id> <date>
Prévisualiser le SQL Jinja airflow tasks render <dag_id> <task_id> <date>
Déclencher un DAG airflow dags trigger <dag_id>
Rattrapage d'historique airflow dags backfill -s <debut> -e <fin> <dag_id>
Effacer et relancer airflow tasks clear -t <task_regex> <dag_id>
Exporter les secrets airflow connections export connections.json

La maîtrise de la CLI vous confère une autonomie totale pour administrer vos clusters. Dans la leçon suivante, nous allons configurer les notifications d'incidents par e-mail et webhook pour être alerté en temps réel !

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue