[Salt-fr] modification automatique de valeur

nemo nemo at nautil.org
Mar 31 Oct 15:04:12 CET 2017


bonjour,

j'avais écrit ce module pour faciliter justement ça. Ça stocke la valeur 
dans un grain et ça l'update en cas de changement.

Un exemple dans un de nos states:

dans le sls:

/etc/bind/domaine.fr.zone.include:
   file.managed:
     - source: salt://dns/domaine.fr.zone.include
     - template: jinja
     - user: root
     - group: root
     - mode: 644
     - require:
       - pkg: bind9
     - watch_in:
       - service: bind9

/etc/bind/domaine.fr.zone:
   module.wait:
     - name: dnsutils.serial
     - update: True
     - zone: domaine
     - watch:
       - file: /etc/bind/domaine.fr.zone.include
   file.managed:
     - source: salt://dns/domaine.fr.zone
     - template: jinja
     - require:
       - module: /etc/bind/domaine.fr.zone

dans le fichier template:
@       IN      SOA     ns1.domaine.fr.      contact.domaine.fr. (
                         {{ salt['dnsutils.serial']('domaine') }}      ; 
serial number YYMMDDNN
                         3600            ; Refresh

Si le fichier (un des fichiers dans ton cas) include est modifié, ça 
upgrade le numéro de série. Sinon, il reste constant

On utilise ça depuis 3 ans sans pb et je n'ai plus touché un numéro de 
série dns depuis que je l'ai...

Paul

On 10/31/2017 02:52 PM, Adnan Aita wrote:
> Je viens de voir la formula de bind, ca ne marchera pas ce que je te 
> proposait.
>
> Pas d'idée, hormis à tweak la formula de bind pour qu'il fasse des 
> file.replace au lieu de file.managed afin de correctement détécté les 
> changements, ou à voir si bind accepte que le serial soit dans un 
> autre fichier (ce dont je doute)
>
> 2017-10-31 12:18 GMT+01:00 MEYGRET Eric <Eric.MEYGRET at bio-access.org 
> <mailto:Eric.MEYGRET at bio-access.org>>:
>
>     Merci Georges pour les idées/pistes, j’étais en train de réfléchir
>     à un serial en fonction de la date de modif du fichier pillar… ça
>     doit être possible  mais j’ai fractionné mes zones dans plusieurs
>     fichier pour que ce soit plus lisible du coup il faut que j’aille
>     balayer l’ensemble des fichiers pour avoir la bonne date…. Ça
>     simplifie pas les choses d’autant que je ne suis pas pythoniste
>     averti… si j’arrive à qlq chose je vous dirai…
>
>     Adnan j’avais vu ce module mais je ne vois pas trop comment faire,
>     dans ma formule si je n’ai pas le champ serial celle-ci va vouloir
>     supprimer la valeur du fichier et si je laisse une valeur elle
>     sera forcément différente de celle mis à jour par dnsutil.serial ?
>     je rate quelque chose ?
>
>     *De :* Salt-fr [mailto:salt-fr-bounces at lists.afpy.org
>     <mailto:salt-fr-bounces at lists.afpy.org>] *De la part de* Adnan Aita
>     *Envoyé :* mardi 31 octobre 2017 08:24
>     *À :* Georges Racinet <gracinet at anybox.fr <mailto:gracinet at anybox.fr>>
>     *Cc :* salt-fr at lists.afpy.org <mailto:salt-fr at lists.afpy.org>
>     *Objet :* Re: [Salt-fr] modification automatique de valeur
>
>     Tu as un module salt pour capable de générer des fichiers de zone DNS
>
>     https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.dnsutil.html
>     <https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.dnsutil.html>
>
>     Tu peux en fonction de ca, avec un onChange modifier ou non le serial.
>
>     Avec la formule bind, tu génère que la conf de bind qui va pointer
>     sur ce fichier de zone.
>
>     Adnan
>
>     2017-10-30 19:42 GMT+01:00 Georges Racinet <gracinet at anybox.fr
>     <mailto:gracinet at anybox.fr>>:
>
>         Bonjour,
>
>         On 10/30/2017 03:41 PM, MEYGRET Eric wrote:
>
>             Je gère mon dns via la formule bind(
>             https://github.com/saltstack-formulas/bind-formula
>             <https://github.com/saltstack-formulas/bind-formula> ), je
>             cherche un moyen d’automatiser la mise à jour de la valeur
>             « serial » de la zone, pour éviter les oublies..
>
>             J’ai modifié le fichier zone.jinja pour calculer la valeur
>             au lieu de la prendre dans les pillars :
>
>             {%- set zone_serial = soa['serial'] %}
>
>             /{% set serial = salt['cmd.run']('date +%Y%m%d%H%M%S') %}/
>
>             Ça marche bien mais la valeur est mise à jour à chaque
>             exécution de l’état et ce n’est pas vraiment l’effet voulu 😊
>
>         Je m'étais dit la même chose récemment mais pour un besoin
>         tellement simple et si peu critique que j'ai fini par utiliser
>         plutôt unbound en laissant le Serial constant…
>
>             Est-ce que quelqu’un aurait une idée pour ne déclencher
>             cette maj uniquement si une valeur de la zone a été
>             modifiée(donc une valeur des pillars) ?
>
>         Je ne vois pas grand chose de très direct, les diffs se font
>         plutôt sur le résultat, et non sur le pillar en entrée, ou
>         alors j'ai raté quelque chose de vraiment intérressant ! Voici
>         quelques idées quand même
>
>         1) blockreplace + cmd.wait
>
>         Je me disais qu'on pourrait sans doute segmenter le fichier en
>         deux et traiter le problème avec deux file.blockreplace et une
>         directive watch, mais ni file.blockreplace ni file.managed
>         n'implémentent watch, donc on ne peut le faire qu'en se
>         rabattant sur cmd.wait ou module.wait.
>
>         Pour essayer d'être plus clair :
>
>         - encadrer toutes les données sauf le Serial avec des
>         marqueurs qui seront des commentaires du point de vue de bind
>         et les gérer avec file.blockreplace.
>         - pour mettre à jour Serial, utiliser
>             + soit un cmd.wait qui lance un sed ou assimilé pour
>         changer juste le serial
>             + soit module.wait (lançant file.replace par exemple),
>           dans les deux cas avec un watch sur le blockreplace pour
>         faire que ça ne s'exécute que si le corps des données a changé
>
>         2) un renderer python pour utiliser dans file.managed
>
>         Il relirait tout le fichier avant de potentiellement le
>         changer (il faudrait alors lui donner le chemin) et
>         implémenterait sa propre logique de diff pour decider de
>         changer ou non le Serial. Variante : travailler sur un fichier
>         auxiliaire caché qui contiendrait un rendu brut du bout de
>         pillar concerné (ordonné pour éviter les faux positifs) et
>         s'en servir pour contrôler a priori.
>
>         Je n'aime pas trop, j'aurais envie de dire « autant écrire
>         carrément un state dédié »
>
>         3) … non plus d'idées
>
>         Note: il existe un salt.states.zone, mais ça n'a pas de rapport.
>
>         En espérant que ça aide,
>
>         -- 
>
>         Georges Racinet
>
>         Anybox SAS, http://anybox.fr
>
>         Téléphone: +33 6 51 32 07 27 <tel:+33%206%2051%2032%2007%2027>
>
>         GPG: B59E 22AB B842 CAED 77F7 7A7F C34F A519 33AB 0A35, sur
>         serveurs publics
>
>
>         _______________________________________________
>         Salt-fr mailing list
>         Salt-fr at lists.afpy.org <mailto:Salt-fr at lists.afpy.org>
>         http://lists.afpy.org/mailman/listinfo/salt-fr
>         <http://lists.afpy.org/mailman/listinfo/salt-fr>
>
>
>     _______________________________________________
>     Salt-fr mailing list
>     Salt-fr at lists.afpy.org <mailto:Salt-fr at lists.afpy.org>
>     http://lists.afpy.org/mailman/listinfo/salt-fr
>     <http://lists.afpy.org/mailman/listinfo/salt-fr>
>
>
>
>
> _______________________________________________
> Salt-fr mailing list
> Salt-fr at lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/salt-fr


-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.afpy.org/pipermail/salt-fr/attachments/20171031/9e46c9c4/attachment-0001.html>


Plus d'informations sur la liste de diffusion Salt-fr