2016-04-26 5 views
0

Ich habe einige Probleme, wo meine verwalteten Dateien bei jedem Statuslauf geschrieben werden, auch wenn in der Datei nichts aktualisiert wurde. Seltsamerweise kann ich nichts darüber finden, dies über Google oder in den Salzdokumenten zu verhindern.SaltStack - Verwaltete Datei wird bei jedem Lauf geschrieben, wie schreibt man die Datei nur, wenn es Updates gibt?

Meine Bundesstaaten sind in init.sls aufgeteilt, um das Paket bereitzustellen, und config.sls, um das Paket zu konfigurieren, wobei standard- und umgebungsspezifische Konfigurationswerte in eine Säule aufgeteilt werden. Beispiele sind unten.

Config State Example: 
{% from "amq/map.jinja" import amq with context %} 
camelxml_conf: 
    file.managed: 
    - name: {{ amq.camelxml }} 
    - source: salt://amq/conf/camel.xml.tmpl 
    - template: jinja 
    - user: omapp 
    - group: omapp 
    - mkdirs: True 
    - recurse: 
     - user 
     - group 

Pillar Example: 
default_routes: 
    Route1: 
    from_uri: 'activemq:inputqueue1' 
    process_ref: 'myprocessor1' 
    to_uri: 'activemq:outputqueue1' 
    Route2: 
    from_uri: 'activemq:inputqueue2' 
    process_ref: 'myprocessor2' 
    to_uri: 'activemq:outputqueue2' 

{% if 'qa' in grains['env'] %} 
env_routes: 
    route1: 
    from_uri: 'activemq:inputqueue3' 
    process_ref: 'myprocessor3' 
    to_uri: 'activemq:outputqueue3' 
{% endif %} 

Camel.xml Template Example: 
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> 
     <!-- routes common across all environments --> 
     {% for route, args in pillar.get('default_routes', {}).items() %} 
     <route> 
      <from uri="{{ args.from_uri }}"/> 
      <process ref="{{ args.process_ref }}"/> 
      <to uri="{{ args.to_uri }}"/> 
     </route> 
     {% endfor %} 

     <!-- routes unique to this environment --> 
     {% for env_route, args in pillar.get('env_routes', {}).items() %} 
     <route> 
      <from uri="{{ args.from_uri }}"/> 
      <process ref="{{ args.process_ref }}"/> 
      <to uri="{{ args.to_uri }}"/> 
     </route> 
     {% endfor %} 

Mache ich etwas völlig falsch hier? Sollte ich in meiner Säule keine Werte dynamisch setzen? Ich denke, das ist vielleicht der Grund, warum bei jedem Statuslauf eine neue Datei geschrieben wird, bin mir aber nicht sicher.

+0

Was meinst du? Es gibt keinen Unterschied zwischen der alten und der neuen Datei, sogar die Zeilenreihenfolge? Die Änderungszeit der Datei wird jedes Mal aktualisiert, wenn Sie Ihren Status ohne weitere Änderungen ausführen. Hast du die Ausgabe eines Laufs? Welche Version verwendest du? Das Salt-Verhalten besteht darin, eine nicht geänderte Datei nicht zu aktualisieren. Wenn sie aktualisiert wird, kann dies ein Fehler sein. –

Antwort

2

Wenn Sie Ihren Status mit test = True an den Befehl angehängt haben, zeigt er Ihnen ein diff der Änderungen, die es machen wird. Das könnte Ihnen helfen herauszufinden, warum es eine Änderung für notwendig hält.

+0

Danke - das hat mir klar gemacht, dass ich cmd.run anstelle von cmd.wait in meinem init-Zustand benutze, was wiederum dazu führte, dass die Konfigurationsdatei bei jedem Durchlauf als geändert betrachtet wurde. – user797963

Verwandte Themen