veilletech.fr
30 sept. Feed du jour
#05 DEVOPS Article

Apprise 2.0 : le SMS ne part que si l'e-mail échoue

Une alerte qui bloque le cron qui l'envoie n'alerte personne.

Apprise, bibliothèque et CLI Python qui envoie des notifications vers plus de 160 services, sort en 2.0 avec des changements incompatibles : notify() renvoie un objet AppriseResult, deux statuts apparaissent, plusieurs options sont renommées. En échange : escalade par priorité, nouvelles tentatives ciblées, délais maximum et variables pour sortir les secrets des fichiers YAML. Source en allemand (heise), faits vérifiables dans les notes de version sur GitHub.

3 min de lectureintermédiairevidéo 1:23
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Ce qui casse
  3. Ce qui arrive
  4. Comment s'y prendre
  5. À retenir

Ce qui se passe

Apprise envoie une notification vers plus de 160 services — e-mail, messageries, SMS — avec une URL par destination et une syntaxe unique. On le croise dans des scripts, des tâches cron, derrière l'intégration Home Assistant, ou via Apprise API, son enveloppe REST. La version 2.0.0, en grande partie réécrite par son mainteneur Chris Caron, casse l'API Python sur plusieurs points.

Ce qui casse

notify() renvoie un objet AppriseResult. bool(result) donne toujours True ou False, donc if apobj.notify(...) continue de marcher. En revanche l'ancien None — aucun service ne correspondait au tag — devient False :

Python
resultat = apobj.notify(body="Sauvegarde échouée")

if resultat is None:  # v1 : aucun service pour ce tag
    ...               # v2 : n'arrive plus, c'est False

L'objet porte un journal et un statut par service, alignés sur les codes de sortie de la CLI : SUCCESS (0), FAILURE (1), NOMATCH (3), et deux nouveaux, PARTIAL (4) — une partie des services a échoué, là où la v1 répondait False — et TIMEOUT (5).

Les autres ruptures :

Avant Après
APPRISE_CONFIG APPRISE_CONFIG_PATH (l'ancien nom avertit, pour l'instant)
use_pgp= pgp_mode=
?pgpkey= ?pgppub=
paramètre d'URL inconnu ignoré erreur explicite

Toutes les erreurs héritent d'AppriseException, mais ValueError et OSError restent levées là où elles l'étaient.

Ce qui arrive

Escalade. Un tag prend une priorité, 2:alerts : plus le chiffre est bas, plus c'est urgent. --tag alerts prévient le niveau le plus urgent et ne descend au suivant qu'en cas d'échec — le SMS seulement si l'e-mail n'est pas passé.

Tentatives ciblées. ?retry= se souvient de ce qui est arrivé : si un destinataire sur trois échoue, lui seul reçoit un nouvel envoi.

Délais. Plus d'attente infinie sur un serveur figé ; envoi parallèle par défaut (--disable-async pour séquencer), et await apobj.async_notify() côté Python.

Terminal
# priorité 2 uniquement, jusqu'à trois tentatives
apprise -g "2:alerts:3" -b "Disque plein sur srv-01"

# 10 s pour tout le lot, 5 s par service (60 s par défaut)
apprise --tag alerts --limit 10 --service-limit 5 -b "Disque plein sur srv-01"

Secrets hors fichier. Une configuration YAML peut contenir des ${NAME}, déclarés dans une section template:. La valeur vient de la ligne de commande (--template-var api_key=…, ou -tv), d'une variable APPRISE_TEMPLATE_API_KEY, d'une valeur par défaut, ou de l'API. Limites : ni le schéma avant ://, ni les noms d'options ou de tags ne se remplacent, et le format TEXT n'est pas concerné.

Côté sécurité, apprise:// ne met plus l'identifiant de configuration dans l'URL — donc plus dans les journaux du serveur — et le masquage des valeurs sensibles dans les logs est renforcé (CWE-312). Nouveaux services : Delta Chat, WPUSH, YouLMK, Telnyx SMS.

Comment s'y prendre

Qui ne peut pas migrer tout de suite épingle la v1 :

Terminal
pip install "apprise>=1.0.0,<2.0.0"

La branche apprise-v1-release doit recevoir des correctifs de sécurité et de bugs pendant un à deux ans, dans la mesure du possible selon son mainteneur. Pour migrer : chercher les is None sur le retour de notify(), les usages d'APPRISE_CONFIG et des options PGP, puis tester les URL — celles qui contenaient un paramètre fantaisiste vont désormais échouer.

Source (en allemand) : Der Universalbote für Admins: Apprise 2.0, heise Developer, 29 septembre 2026. Détail complet dans les notes de version v2.0.0.