2016-04-26 6 views
0

ファイル内に更新されたものがなくても、管理されたファイルがすべての状態で実行されているときに、何らかのトラブルが発生しています。奇妙なことに、私はGoogleや塩のドキュメントでこれを止めることについて何かを見つけることができないようです。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 %} 

私はここで完全に間違って何をやっていますか?私は柱の中で動的に値を設定してはいけませんか?私はこれが新しいファイルが各状態の実行で書かれているが、確信が持てない理由かもしれないと思っている。

+0

どういう意味ですか?古いファイルと新しいファイルの間に違いはありません。ファイルの変更時刻は、あなたが他の変更なしで状態を実行するたびに更新されますか?実行の出力はありますか?どのバージョンを使用していますか? Saltの動作は、変更されていないファイルを更新しないため、更新し続けるとバグかもしれません。 –

答えて

2

あなたの状態をtest = Trueで実行した場合、コマンドに追加された変更の差分が表示されます。これは、変更が必要だと考える理由を追跡するのに役立ちます。

+0

ありがとう - これは私のinit状態でcmd.waitの代わりにcmd.runを使用していたことに気付きました。これは設定ファイルをそれぞれの実行時に変更されたものとして見せました。 – user797963

関連する問題