Ansible
將渲染的 Jinja 保存到變數
我想將一些 Jinja 模板拆分為多行以保持行數低於 120 個字元,並註冊一個變數以便於重用。有沒有辦法做類似下面的事情?是否有內置(或社區)模組?如果可能的話,我想在不使用臨時文件的情況下這樣做。
- jinja: "https://{{ username }}:{{ token }}@hosting.com/organization" vars: username: "{{ hashivault_secrets.value.data.USERNAME }}" token: "{{ hashivault_secrets.value.data.TOKEN }}" register: url
所以使用/重用可能看起來像
- pip: name: my-internal-package env: PIP_EXTRA_INDEX_URL: "{{ url }}"
我目前正在使用 Ansible 2.9。
您可以直接設置一個var:
vars: url: https://{{ username }}:{{ token }}@hosting.com/organization username: "{{ hashivault_secrets.value.data.USERNAME }}" token: "{{ hashivault_secrets.value.data.TOKEN }}"
或者您可以使用
set_fact
:- set_fact: url: https://{{ username }}:{{ token }}@hosting.com/organization vars: username: "{{ hashivault_secrets.value.data.USERNAME }}" token: "{{ hashivault_secrets.value.data.TOKEN }}"
主要的實際區別(除了設置變數不需要額外的任務)是變數在使用時進行評估,因此如果變化,第一個值
url
可能會隨著時間hashivault_secrets
而變化,而set_fact
基於對變數的評估將導致靜態值set_fact
任務執行時的模板。這兩種行為都是有用的,具體取決於具體情況。