[Salt-fr] modification automatique de valeur

remy.dernat remy.dernat at univ-montp2.fr
Lun 30 Oct 22:42:13 CET 2017


    
Bonsoir,
Autre idée : implémenter un reactor voir éventuellement un orchestrator. Une modification de contenu sur les configs renvoie une alerte au master qui redescend une autre recette qui se contente de mettre à jour le serial.
Rémy.
Envoyé depuis mon appareil Samsung

-------- Message d'origine --------
De : Georges Racinet <gracinet at anybox.fr> 
Date : 30/10/2017  19:42  (GMT+01:00) 
À : salt-fr at lists.afpy.org 
Objet : Re: [Salt-fr] modification automatique de valeur 


    Bonjour, 

      

      On 10/30/2017 03:41 PM, MEYGRET Eric wrote:

    
    
      
      
      <!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;
	mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#0563C1;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:#954F72;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri",sans-serif;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri",sans-serif;
	mso-fareast-language:EN-US;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
	{page:WordSection1;}
-->
      
         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
GPG: B59E 22AB B842 CAED 77F7 7A7F C34F A519 33AB 0A35, sur serveurs publics

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


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