
テンプレート ファイルを取得し、いくつかの変数を補間して、結果のファイルを別のディレクトリに配置するプレイブックを作成する必要があります。
問題の最初の部分は、結果のファイルが別の Ansible プレイブックとして使用されるため、ソース ファイルには他の補間が含まれており、これらの補間はそのまま保持される必要があることです。例として、ソース ファイルに次のような内容が含まれていると仮定します。
key1: {{ value1 }}
key2: {{ value2 }}
の値は、key1
私のプレイブックによって補間される必要があります (変数の値になりますvalue1
) が、同時に、value2
そのまま保持される必要があります ( になります) {{ value2 }}
。
問題の 2 つ目の部分は、このファイルが他のプロセスによって更新されているため、ソース ファイルを変更して中括弧の前にバックスラッシュを追加するだけでは不十分なことです。さらに、テンプレート ファイルは随時更新されるため、次の更新後にどの変数をスキップする必要があるかを予測できません。 を挿入する必要があることだけはわかっていますvalue1
が、他の変数の名前がわかりません (今日は と がありますvalue2
がvalue3
、明日は開発者がvalue2
に名前を変更しvalue2_deprecated
てどこかに追加しますvalue3
)。
Ansible に補間のみが必要であることを要求できますかvalue1
?
ありがとう。
答え1
質問:「テンプレートには補間が含まれており、これらの補間はそのまま保存される必要があります。「
A: デフォルト変数を宣言する
lbr: '{{ "{{" }}'
rbr: '{{ "}}" }}'
value1: '{{ lbr }} value1 {{ rbr }}'
value2: '{{ lbr }} value2 {{ rbr }}'
テンプレートを作成する
shell> cat template.yml.j2
key1: {{ value1 }}
key2: {{ value2 }}
質問:「値1のみを補間する必要があります。「
A: デフォルト値を上書きします。例:
- template:
src: template.yml.j2
dest: playbook.yml
vars:
value1: value1
与える
shell> cat playbook.yml
key1: value1
key2: {{ value2 }}