私は私たちの設定を少しモジュラー化しようとしています。現在のところ、環境ごとにテンプレートファイルがハードコードされており、初期状態ではそれぞれの環境に合わせてjinjaを使用しています。状態を分割し、すべての環境で同じ設定値で維持する必要があるいくつかのデフォルト値を追加しています。ここでSaltStack - 辞書をピラーで使い、テンプレートファイルの値をループする方法は?
は、私の柱の一例です:
/../pillars/amq/amq.sls
default_routes:
Queue1:
- from_uri: 'activemq:fromSomeURI1'
- process_ref: 'processorName1'
- to_uri: 'activemq:toSomeOutURI1'
Queue2:
- from_uri: 'activemq:fromSomeURI2'
- process_ref: 'processorName2'
- to_uri: 'activemq:toSomeOutURI2'
は、ここに私のテンプレートファイルの例です:
/../salt/amq/conf/camel.xml.template
lines lines lines
lines lines lines
...
{% for route, args in pillar.get('default_routes', {}).items() %}
<route>
<from uri="{{ route.from_uri }}"/>
<process ref="{{ route.process_ref }}"/>
<to uri="{{ route.to_uri }}"/>
</route>
{% endfor %}
...
lines lines lines
lines lines lines
私が行うことができるように必要なもの柱に値の辞書を追加でそのデフォルト値のリストをループして、camel.xml.templateからすべての環境にわたるデフォルトルートを構築します。次に、ピラーには、環境に固有の値も格納されます。これは非常に似た方法でファイルに追加します。
ご迷惑をおかけして申し訳ありません。私はさまざまなものを試してみたが、エラーが出たり、デフォルトの行がファイルから削除されたりする。
ありがとうございます!
、感謝のようなキーがあり、実際の辞書ですので、あなたが
{{ args.from_uri }}
に物事を{{ route.from_uri }}
変更する必要があります。私はこれらの更新を行ったが、私はまだforループの行のための出力を得ていない。テンプレートから生成されたファイルは、forループが出力する内容を生成しません。エラーもありません。 – user797963@ user797963まず、minionに対して 'default_routes'が適切に設定されているかどうかを確認する必要があります。 default_routesピラが適切に設定されているかどうかを 'salt 'your_minion" pillar.items'で明らかにしてください。そうであれば、デバッグの次のステップに進むことができます。 – RedBaron
巨大な助け、ありがとうございました。これは、私が塩柱の上にハンドルをつけるための土台となる仕事を設定し、それがちょうどYAMLがPythonに翻訳して、Jinja経由でアクセスすることができることを私に明示しました(ピラール.itemsコマンドでミニオンがアクセスできる巨大)。 PythonツールのYAMLも非常に貴重です。再度、感謝します! – user797963