0
我試圖「只打印/顯示」現有的變量。變量名稱是動態的。問題在於Ansible不評估when:
聲明中的varibale名稱。因此我無法獲得when: (item.1 + '_wwn_' + item.0) is defined
正常工作。Ansible在條件語句之前評估變量
播放:
---
- hosts: 127.0.0.1
vars:
host_name: ['COM01ESX07', 'COM01ESX88']
COM01ESX07_wwn_2: "This exist"
tasks:
- debug:
var: "{{item.1}}_wwn_{{item.0}}"
when: (item.1 + '_wwn_' + item.0) is defined
with_nested:
- ['1', '2']
- "{{host_name}}"
不幸的是這deplays所有varaibles eventhough他們沒有定義
TASK [debug] *******************************************************************************************************************************************************************
ok: [127.0.0.1] => (item=[u'1', u'COM01ESX07']) => {
"COM01ESX07_wwn_1": "VARIABLE IS NOT DEFINED!",
"item": [
"1",
"COM01ESX07"
]
}
ok: [127.0.0.1] => (item=[u'1', u'COM01ESX88']) => {
"COM01ESX88_wwn_1": "VARIABLE IS NOT DEFINED!",
"item": [
"1",
"COM01ESX88"
]
}
ok: [127.0.0.1] => (item=[u'2', u'COM01ESX07']) => {
"COM01ESX07_wwn_2": "This exist",
"item": [
"2",
"COM01ESX07"
]
}
ok: [127.0.0.1] => (item=[u'2', u'COM01ESX88']) => {
"COM01ESX88_wwn_2": "VARIABLE IS NOT DEFINED!",
"item": [
"2",
"COM01ESX88"
]
}
但是如果我的時替換:與when: ({{item.1 + '_wwn_' + item.0}}) is defined
它w ^帶病上班,雖然我會得到worning消息:
TASK [debug] *******************************************************************************************************************************************************************
[WARNING]: when statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: ({{item.1 + '_wwn_' + item.0}}) is defined
skipping: [127.0.0.1] => (item=[u'1', u'COM01ESX07'])
skipping: [127.0.0.1] => (item=[u'1', u'COM01ESX88'])
ok: [127.0.0.1] => (item=[u'2', u'COM01ESX07']) => {
"COM01ESX07_wwn_2": "This exist",
"item": [
"2",
"COM01ESX07"
]
}
skipping: [127.0.0.1] => (item=[u'2', u'COM01ESX88'])
問題: 我怎樣才能避免worning消息,仍然僅處理現有varaiables。
更有趣的問題是:爲什麼你的解決方法正在工作...... – techraf