☎️ 3615 jaidesproblemes¶
Une liste de solutions à des situations fréquentes qui peuvent se produire en local, en staging, en prod…
git¶
En cas de conflits sur .secrets.baseline
¶
# installer detect-secrets s'il n'est pas présent dans l'environnement virtuel
# ou en local
poetry add detect-secrets
# re-générer .secrets.baseline
poetry run detect-secrets scan > .secrets.baseline
# ajout au rebase en cours
git add .secrets.baseline
# continuer le rebase si aucun autre conflit n'est présent
git rebase --continue
En cas de conflits sur poetry.lock
¶
# ou avec poetry
rm poetry.lock
poetry lock
git add poetry.lock
# si c'est pendant un rebase...
git rebase --continue
Mise en place du poste developpeur¶
Je n’arrive pas a accéder à l’interface via une url *.local¶
L’interface sur un poste développeur doit-être accessible via les URLs:
http://quefairedemesdechets.ademe.local/
http://quefairedemesobjets.ademe.local/
http://lvao.ademe.local/ : redirigé vers le site institutionnel
Si tel n’est pas le cas, voici quelques configuration à vérifier
/etc/hosts¶
Dans la configuration /etc/hosts
, vérifier la présence des lignes
127.0.0.1 lvao.ademe.local
127.0.0.1 quefairedemesdechets.ademe.local
127.0.0.1 quefairedemesobjets.ademe.local
Vérifier la présence des certificats ssl¶
Si les certificats ne sont pas présents, les logs du serveur nginx affichent une erreur type
lvao-proxy-1 | 2025/05/20 10:47:25 [emerg] 1#1: cannot load certificate "/etc/nginx/ssl/lvao.ademe.local+1.pem": BIO_new_file() failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/etc/nginx/ssl/lvao.ademe.local+1.pem, r) error:10000080:BIO routines::no such file)
Dans ce cas, (re-)générer les certificats
make init-certs
.env¶
Enfin, vérifier les variables d’environnement en prenant exemple sur le fichier .env.template
Stack data, airflow, dbt¶
En local, il peut s’avérer complexe de développer sur la stack data, du fait du volume de données, mais aussi de l’enchaînement de tâches dans les DAGs.
Visualiser les logs d’un DAG en échec¶
Si un dag échoue, il peut être utile de visualiser ses logs. Pour ce faire,
cliquer sur la tâche échouée (
failed
)cliquer dans l’onglet
Logs
cliquer sur
see more
Cela va amener à une vue détaillée des logs du DAG échuoée
Rejouer une tâche dbt
d’un DAG¶
DBT est utilisé pour transformer les données en base de données.
En visualisant les logs d’une tâche en échec, on peut retrouver la commande dbt
utilisée pour executer cette tâche. En général cela se situe tout en haut des logs
[2025-07-09, 06:53:26 UTC] {local_task_job_runner.py:123} ▶ Pre task execution logs
[2025-07-09, 06:53:26 UTC] {subprocess.py:78} INFO - Tmp dir root location: /tmp
[2025-07-09, 06:53:26 UTC] {subprocess.py:88} INFO - Running command: ['/usr/bin/bash', '-c', 'dbt run --models intermediate.acteurs']
[2025-07-09, 06:53:26 UTC] {subprocess.py:99} INFO - Output:
[2025-07-09, 06:53:28 UTC] {subprocess.py:106} INFO - 06:53:28 Running with dbt=1.10.2
Ici, dbt run --models intermediate.acteurs
En supposant que vous avez une stack airflow en local, vous pouvez recopier cette commande dans le conteneur airflow-scheduler
:
# depuis la racine du repo, où le fichier docker-compose.yml se situe
docker compose exec airflow-scheduler dbt run --models intermediate.acteurs
Ainsi, vous pouvez désormais effectuer toutes les modifications de code souhaitées dans vos modèles avant de rejouer cette tâche.
Créer un utilisateur sur Airflow sans accès à la UI¶
Il est possible de créer un user directement depuis psql
, pour ce faire
Générer un mot de passe en utilisant
werkzeug
utilisé par Airflow
# Depuis un shell python, par exemple poetry run python
from werkzeug.security import generate_password_hash
print(generate_password_hash('your_password'))
# Retourne une string ressemblant à pbkdf2:sha256:260000$abc123$...
Insérer le nouvel utilisateur dans la table
ab_user
Récupérer la commande de connexion depuis le dashboard Clever Cloud (dans notre cas):
psql -h databae_host_name -p 5432 -U user -d airflow_database`
Executer le SQL
ci-dessous
INSERT INTO ab_user (
id, first_name, last_name, username, password, email, active
) VALUES (
1000, 'Admin', 'User', 'admin', 'pbkdf2:sha256:260000$abc123$...', 'admin@example.com', true
);
À noter : assurez vous que 1000 n’est pas déjà utilisé. Il est possible de récupérer l’ID le plus haut avec la commande
SELECT MAX(id) FROM ab_user;
Assigner le rôle
Admin
Commencez par trouver l’ID du rôle Admin
SELECT id FROM ab_role WHERE name = 'Admin';
En supposant que l’ID soit 1
, l’insérer dans la table de lien
INSERT INTO ab_user_role (user_id, role_id) VALUES (1000, 1);
BONUS : avec un accès au CLI Airflow, c’est quand même beaucoup plus simple :
airflow users create \
--username admin \
--firstname Admin \
--lastname User \
--role Admin \
--email admin@example.com \
--password your_password
Malheureusement on a pas d’accès shell actuellement sur nos instances déployées dans Clever cloud…