[Salt-fr] modification automatique de valeur

MEYGRET Eric Eric.MEYGRET at bio-access.org
Mar 31 Oct 12:18:31 CET 2017


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] De la part de Adnan Aita
Envoyé : mardi 31 octobre 2017 08:24
À : Georges Racinet <gracinet at anybox.fr>
Cc : 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

 

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 < <mailto:gracinet at anybox.fr> 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 ), 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
 <mailto:Salt-fr at lists.afpy.org> Salt-fr at lists.afpy.org
 <http://lists.afpy.org/mailman/listinfo/salt-fr> 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/d77a2ac3/attachment.html>
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: smime.p7s
Type: application/pkcs7-signature
Taille: 4821 octets
Desc: non disponible
URL: <http://lists.afpy.org/pipermail/salt-fr/attachments/20171031/d77a2ac3/attachment.bin>


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