tech:generateur_de_conf_nagios
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tech:generateur_de_conf_nagios [2025/04/24 02:33] – Jean-Baptiste | tech:generateur_de_conf_nagios [2025/11/20 10:00] (Version actuelle) – Jean-Baptiste | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| < | < | ||
| - | {{tag> | + | {{tag> |
| # Générateur de conf Nagios | # Générateur de conf Nagios | ||
| - | ** Brouillon ** | ||
| object configuration files | object configuration files | ||
| Ligne 132: | Ligne 131: | ||
| '' | '' | ||
| - | ~~~ | + | ~~~perl |
| #define host { | #define host { | ||
| # | # | ||
| Ligne 154: | Ligne 153: | ||
| '' | '' | ||
| - | ~~~ | + | ~~~perl |
| define hostgroup { | define hostgroup { | ||
| hostgroup_name | hostgroup_name | ||
| Ligne 162: | Ligne 161: | ||
| '' | '' | ||
| - | ~~~ | + | ~~~perl |
| define hostgroup { | define hostgroup { | ||
| Ligne 180: | Ligne 179: | ||
| ## templates2.cfg | ## templates2.cfg | ||
| - | ~~~c | + | ~~~perl |
| Ligne 284: | Ligne 283: | ||
| tasks: | tasks: | ||
| + | - name: Mkdir out/L | ||
| + | ansible.builtin.file: | ||
| + | path: out/L{{ line }}/ | ||
| + | state: directory | ||
| + | mode: " | ||
| + | |||
| - name: Copy cfg files | - name: Copy cfg files | ||
| ansible.builtin.copy: | ansible.builtin.copy: | ||
| Ligne 323: | Ligne 328: | ||
| {% for HOST in hosts %} | {% for HOST in hosts %} | ||
| - | {% if ( HOST.__lines is not defined ) or ( line in HOST.__lines | + | {% if ( HOST.__lines is not defined ) or ( line in HOST.__lines |
| - | # {{ HOST.__comment | d() }} | + | {% if ( HOST.__comment[line] is defined |
| + | # {{ HOST.__comment[line] | d(HOST.__comment) | ||
| + | {% endif %} | ||
| define host { | define host { | ||
| {% for k, v in HOST.items() %} | {% for k, v in HOST.items() %} | ||
| {% if not k | regex_search(' | {% if not k | regex_search(' | ||
| - | {{ k.ljust(20) }} {{ v }} | + | {% if ( v[line] is defined ) or ( v[line] is not defined and v is not mapping ) %} |
| + | {{ k.ljust(20) }} {{ v[line] | d (v) }} | ||
| + | {% endif %} | ||
| {% endif %} | {% endif %} | ||
| {% endfor %} | {% endfor %} | ||
| Ligne 343: | Ligne 352: | ||
| {% for HOSTGROUP in hostgroups %} | {% for HOSTGROUP in hostgroups %} | ||
| - | {% if ( HOSTGROUP.__lines is not defined ) or ( line in HOSTGROUP.__lines | + | {% if ( HOSTGROUP.__lines is not defined ) or ( line in HOSTGROUP.__lines |
| - | # {{ HOSTGROUP.__comment | d() }} | + | {% if ( HOSTGROUP.__comment[line] is defined |
| + | # {{ HOSTGROUP.__comment[line] | d(HOSTGROUP.__comment) | ||
| + | {% endif %} | ||
| define hostgroup { | define hostgroup { | ||
| {% for k, v in HOSTGROUP.items() %} | {% for k, v in HOSTGROUP.items() %} | ||
| {% if not k | regex_search(' | {% if not k | regex_search(' | ||
| - | {{ k.ljust(20) }} {{ v }} | + | {% if ( v[line] is defined ) or ( v[line] is not defined and v is not mapping ) %} |
| + | {{ k.ljust(20) }} {{ v[line] | d(v) }} | ||
| + | {% endif %} | ||
| {% endif %} | {% endif %} | ||
| {% endfor %} | {% endfor %} | ||
| Ligne 363: | Ligne 376: | ||
| {% for SERVICE in services %} | {% for SERVICE in services %} | ||
| - | {% if ( SERVICE.__lines is not defined ) or ( line in SERVICE.__lines | + | {% if ( SERVICE.__lines is not defined ) or ( line in SERVICE.__lines |
| - | # {{ SERVICE.__comment | d() }} | + | {% if ( SERVICE.__comment[line] is defined |
| + | # {{ SERVICE.__comment[line] | d(SERVICE.__comment) | ||
| + | {% endif %} | ||
| define service { | define service { | ||
| {% for k, v in SERVICE.items() %} | {% for k, v in SERVICE.items() %} | ||
| {% if not k | regex_search(' | {% if not k | regex_search(' | ||
| - | {{ k.ljust(20) }} {{ v }} | + | {% if ( v[line] is defined ) or ( v[line] is not defined and v is not mapping ) %} |
| + | {{ k.ljust(20) }} {{ v[line] | d(v) }} | ||
| + | {% endif %} | ||
| {% endif %} | {% endif %} | ||
| {% endfor %} | {% endfor %} | ||
| Ligne 377: | Ligne 394: | ||
| ~~~ | ~~~ | ||
| + | -------------- | ||
| + | |||
| + | # README | ||
| + | |||
| + | # Nagios object configuration files generator | ||
| + | |||
| + | Cet outil sert à générer les fichiers de configuration Nagios (object configuration files) en prenant les données dans des fichiers YAML et de les exploiter grâce à un template JINJA. | ||
| + | Les fichers .cfg en sortie seront à déposer dans nagios/ | ||
| + | |||
| + | |||
| + | Avantage : | ||
| + | * Une seule configuration central qui peut être déclinée sur l' | ||
| + | * Evite d' | ||
| + | * Permet de mieux voir et comprendre les désparités | ||
| + | * Il devient facil et rapide de comparer la conf d'une ligne à une autre et donc les incohérences resortent mieux | ||
| + | * En cas de création d'une nouvelle ligne il est pertinent et facile de partir du tronc commun | ||
| + | * Plus besoin de merger la conf Nagios d'une ligne à une autre | ||
| + | |||
| + | Inconvéniens: | ||
| + | * Précaution à prendre dans le cas où les fichiers finaux seraient modifiés à la mains sur les serveurs Nagios. | ||
| + | |||
| + | |||
| + | |||
| + | ## Usage | ||
| + | |||
| + | Les fichiers en entrée sont dans in/ | ||
| + | Ils sont de deux types: | ||
| + | * cfg (nagios object configuration files). Ces fichiers ne seront pas transformés. Ces fichiers ne devraient pas ordinairement être modifiés. | ||
| + | * yaml qui servirons à générer des fichiers .cfg | ||
| + | |||
| + | Les fichiers cfg existant serons copiés tel quel | ||
| + | Ex | ||
| + | in/ | ||
| + | in/ | ||
| + | |||
| + | Chanque fichier yaml générera un fichier cfg. | ||
| + | Ex | ||
| + | in/ | ||
| + | in/ | ||
| + | |||
| + | |||
| + | Noter que chaque fichier cfg généré devra être inclue dans nagios.cfg pour être pris en compte par Nagios. | ||
| + | |||
| + | Pour modifier la conf il faut : | ||
| + | 1. Editer le fichier yaml approprié. Ex: servers.yaml. Prendre garde à la clause '' | ||
| + | 2. Lancer la commande ci-dessous. (Exemple avec la ligne 12) | ||
| + | 3. Copier les fichiers out/ | ||
| + | 4. S' | ||
| + | 5. Vérifier la syntaxe (voir plus bas) | ||
| + | |||
| + | Exemple pour la ligne 12 | ||
| + | ~~~bash | ||
| + | env LINE=12 ./ | ||
| + | ~~~ | ||
| + | |||
| + | Le dossier out/ | ||
| + | < | ||
| + | |||
| + | Une fois les nouveaux fichiers en place il est recommandé de les vérifier | ||
| + | ~~~bash | ||
| + | / | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Compatibilité | ||
| + | |||
| + | Compatible Nagios 3 et Nagios 4 | ||
| + | |||
| + | |||
| + | ## Limites | ||
| + | |||
| + | Pour le moment seuls les types d' | ||
| + | * host | ||
| + | * hostgroup | ||
| + | * service | ||
| + | |||
| + | Cepandent si d' | ||
tech/generateur_de_conf_nagios.1745454791.txt.gz · Dernière modification : de Jean-Baptiste
