
我需要製作一個劇本,它將採用模板文件,插入一些變數並將結果文件放入另一個目錄。
問題的第一部分是產生的檔案將用作另一個 Ansible playbook,因此原始檔案包含其他插值,並且這些插值必須按原樣保留。作為一個例子,我們假設原始檔案包含類似的內容:
key1: {{ value1 }}
key2: {{ value2 }}
的值key1
必須由我的劇本進行插值(它將成為變數的值value1
),但同時value2
需要保持原樣(它應該是{{ value2 }}
.
問題的第二部分是我不能只修改原始檔案並在大括號前面添加反斜杠,因為該檔案正在被其他進程更新。而且,由於模板檔案會不時更新,我無法預測下次更新後需要跳過哪些變數。我只知道我需要插值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 }}
問:」我只需要插入 value1 。」
A:覆蓋預設值,例如
- template:
src: template.yml.j2
dest: playbook.yml
vars:
value1: value1
給出
shell> cat playbook.yml
key1: value1
key2: {{ value2 }}