顯然,我在這里遺漏了一些東西(很明顯?):-( 字典在除錯中被正確決議為 var,但我無法將其放入訊息(msg)中。在這種情況下如何正確觸發插值?(實際用例不是除錯,但這是我可以構建的最簡單的示例)。
---
- name: Setup based on subnet
hosts:
- localhost
vars:
siteVars:
10.128.0.0:
ServerName: "AServ"
10.0.0.0:
ServerName: "BServ"
tasks:
- name: Do we get the right Network
debug:
msg: "{{ ansible_default_ipv4.network }}"
- name: Var works
debug:
var: siteVars[ {{ 'ansible_default_ipv4.network' }} ].ServerName
- name: Msg does not work interpolate
debug:
msg: "siteVars[ {{ 'ansible_default_ipv4.network' }} ].ServerName"
給出:
TASK [Do we get the right Network] ******************************************************************************************ok: [localhost] => {
"msg": "10.0.0.0"
}
TASK [Var works] ******************************************************************************************ok: [localhost] => {
"siteVars[ ansible_default_ipv4.network ].ServerName": "BServ"
}
TASK [Msg does not work interpolate] ******************************************************************************************ok: [localhost] => {
"msg": "siteVars[ ansible_default_ipv4.network ].ServerName"
}
uj5u.com熱心網友回復:
在這種情況下如何正確觸發插值?
由于siteVars和ServerName也是資料結構(變數)的一部分,因此花括號也需要將它們包圍起來。
- name: Msg work interpolate too
debug:
msg: "{{ siteVars[ansible_default_ipv4.network].ServerName }}"
導致輸出
TASK [Msg work interpolate too] ***
ok: [localhost] =>
msg: BServ
其他相關問題在這里
- 如何使用 Ansible 嵌套變數?
- 在 Ansible 中訪問嵌套變數變數
- 劇本中的Ansible
set_fact嵌套變數
檔案
- Ansible 常見問題解答:我應該什么時候使用 {{ }}?如何插入變數或動態變數名?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410052.html
標籤:
