Aller au contenu

Configuration

La configuration permet de définir tous vos services de notification au même endroit, tout en prenant en charge les groupes, les tags et la protection des secrets hors de l’historique de votre shell.

La configuration Apprise est portable. Le même fichier de configuration peut être utilisé sans modification avec le CLI, le serveur API et la bibliothèque Python.

Envisagez d’utiliser des fichiers de configuration si :

  • vous souhaitez réutiliser la même configuration de notification sur plusieurs scripts ou systèmes ;
  • vous voulez garder les identifiants hors de l’historique de votre shell ;
  • vous voulez regrouper des services ou simplifier les références à vos URL Apprise à l’aide de tags ;
  • vous voulez que la même configuration fonctionne avec le CLI, l’API et Python.

Si vous n’avez besoin que d’une notification ponctuelle, des URL en ligne suffisent. Pour tout ce qui va au-delà, les fichiers de configuration sont recommandés.

Apprise prend en charge deux formats de configuration. Tous deux décrivent les mêmes informations, mais YAML permet d’exprimer davantage de structure.

  • TEXT : simple, basé sur des lignes et facile à lire. Idéal pour les petites configurations ou les réglages manuels.
  • YAML : structuré et normalisé. Mieux adapté aux configurations plus volumineuses et aux outils d’automatisation.

La configuration TEXT est basée sur des lignes.

  • Les lignes vides sont ignorées
  • Les commentaires commencent par # ou ;
  • Chaque URL peut être précédée d’un ou plusieurs tags
  • Vous pouvez définir des groupes de tags
  • Vous pouvez inclure d’autres sources de configuration

La configuration TEXT est idéale si :

  • vous voulez la configuration la plus simple possible ;
  • vous ne gérez qu’un petit nombre de services ;
  • vous préférez une syntaxe minimale.
# Notifications email
mailto://user:password@gmail.com
# Notifications Discord
discord://webhook_id/webhook_token

Les tags vous permettent d’organiser vos services de notification en groupes logiques tels que personal, ops ou critical. Vous pouvez ensuite cibler ces groupes sans modifier vos URL de destination.

Vous pouvez catégoriser les services en plaçant des tags avant l’URL, séparés par un signe égal (=).

# Syntaxe : tag=url
# Associe le tag 'desktop' à cette notification
desktop=gnome://
# Vous pouvez attribuer plusieurs tags en utilisant des virgules ou des espaces
# Cette URL fait partie de 'tv' ET de 'kitchen'
tv,kitchen=kodi://user:pass@kitchen.host

Vous pouvez inclure d’autres fichiers de configuration afin de garder votre configuration propre. C’est excellent pour séparer les secrets de la logique générale.

# 1. Définir vos services de base
user1=mailto://credentials
user2=mailto://credentials
# 2. Définir un groupe
# Notifier 'friends' notifiera 'user1' et 'user2'
friends = user1, user2

Vous pouvez importer d’autres fichiers de configuration (locaux ou distants) à l’aide du mot-clé include.

# Lire depuis un autre fichier de configuration Apprise sur le serveur local
include /etc/apprise/secrets.conf
# Lire depuis un serveur API Apprise
include https://my-config-server.com/get/my-key/

Le filtrage par tag reste cohérent entre les outils. Par exemple, avec le CLI vous pouvez cibler un groupe via son tag :

Les expressions de filtre générales suivent ces règles :

FiltreServices sélectionnés
--tag TagAPossède TagA
--tag TagA,TagBPossède TagA ET TagB
--tag 'TagA' --tag 'TagBPossède TagA OU TagB
--tag 'TagA,TagC --tag TagBPossède (TagA ET TagC) OU TagB

Exemple :

Fenêtre de terminal
apprise --tag="ops,critical" \
--body="Notifier les services qui possèdent à la fois les tags ops ET critical"
apprise --tag="ops" --tag "critical" \
--body="Notifier tous les services qui possèdent soit 'ops', soit 'critical', soit les deux"

Que vous utilisiez TEXT ou YAML, le chargement de la configuration dans le CLI ou la bibliothèque se fait de la même manière.

Vous pouvez charger un fichier avec l’option --config (ou -c). Vous pouvez la préciser plusieurs fois pour charger plusieurs fichiers.

Fenêtre de terminal
# Charger un fichier local
apprise --config=/etc/apprise/config.yml --body="test"
# Charger depuis une URL
apprise --config=https://myserver.com/cfg/apprise --body="test"

Si vous ne précisez aucun fichier de configuration via le CLI (--config), Apprise charge automatiquement un fichier de configuration par défaut pour vous.

Les fichiers de configuration suivants sont recherchés dans l’ordre indiqué ci-dessous ; la première correspondance trouvée est chargée, et rien d’autre n’est ensuite traité.

  1. ~/.apprise
  2. ~/.apprise.conf
  3. ~/.apprise.yml
  4. ~/.apprise.yaml
  5. ~/.config/apprise
  6. ~/.config/apprise.conf
  7. ~/.config/apprise.yml
  8. ~/.config/apprise.yaml
  9. ~/.apprise/apprise
  10. ~/.apprise/apprise.conf
  11. ~/.apprise/apprise.yml
  12. ~/.apprise/apprise.yaml
  13. ~/.config/apprise/apprise
  14. ~/.config/apprise/apprise.conf
  15. ~/.config/apprise/apprise.yml
  16. ~/.config/apprise/apprise.yaml

Les chemins globaux suivants sont aussi recherchés si rien n’est trouvé ci-dessus :

  1. /etc/apprise
  2. /etc/apprise.yml
  3. /etc/apprise.yaml
  4. /etc/apprise/apprise
  5. /etc/apprise/apprise.conf
  6. /etc/apprise/apprise.yml
  7. /etc/apprise/apprise.yaml

Il existe deux tags spéciaux que vous pouvez utiliser pour contrôler le comportement des notifications.

TagDescription
alwaysSi vous attribuez le tag always à une URL dans votre configuration, elle sera TOUJOURS déclenchée, même si vous filtrez sur un autre tag via le CLI.
allUtilisé lors de l’envoi d’une notification (par exemple apprise --tag=all). Cela demande à Apprise d’ignorer tous les filtres et de notifier tous les services définis.

Pour les fonctionnalités avancées de tags — chaînes d’escalade par priorité, filtrage exclusif, tentatives/délai par service et remplacements par appel — consultez Routage par Tags & Tentatives.

Si vous hébergez votre configuration sur un serveur web privé, Apprise détecte le format en fonction de l’en-tête Content-Type renvoyé par le serveur, ou via un paramètre d’URL explicite.

FormatHTTP Content-TypeForçage par URL
YAMLtext/yaml, application/x-yamlhttp://...?format=yaml
TEXTtext/plainhttp://...?format=text
Questions ou commentaires ?

Documentation

Vous avez repéré une faute de frappe ou une erreur ? Signalez-la ou proposez une correction .

Problèmes Techniques

Vous rencontrez un problème avec le code ? Ouvrez un ticket sur GitHub :

Conçu avec amour depuis le Canada