即使文件中没有更新,我在每次运行状态时都会写入托管文件时遇到了一些麻烦。奇怪的是,我似乎无法找到任何有关通过谷歌或盐文档阻止这种情况发生的事情。SaltStack - 每次运行都会写入受管理的文件,如果只有更新文件才写入文件?
我的状态被分成init.sls来部署软件包,config.sls来配置软件包,默认和环境特定的配置值被分成一个支柱。示例如下。
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 %}
我做什么完全错了吗?我不应该在我的支柱上动态设置数值吗?我在想这可能是为什么每个州运行时都会写一个新文件,但我不确定。
你是什么意思?旧文件和新文件没有区别,即使是行顺序?每次在没有其他修改的情况下运行状态时,文件的修改时间会更新?你有跑步的输出吗?你使用什么版本?盐的行为是不更新未修改的文件,所以如果它不断更新它,它可能是一个错误。 –