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.
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. –