我无法运行Ansible剧本中的内联elif jinja语句。我的游戏如下所示
vm_number是动态生成的,有一个具有每个vm值的vars文件(例如:“ PARAMS_vm_1”)。
PARAMS_vm_1:
-IP
-名称
-fqdn
-操作系统
-位置
条件:
<5错误
= 5将一个值附加到列表中
只需将PARAMS_vm_1
的值设置为get_vmdata
- name: set vm name
set_fact:
vmname: "vm_{{ vm_number }}"
- name: set PARAMS_vmname
set_fact:
PARAMS_vmname: "PARAMS_{{ vmname }}"
- name: get get_vmdata
set_fact:
get_vmdata: "{{ error if ((lookup('vars', PARAMS_vmname)) | length < 5) elif ((lookup('vars', PARAMS_vmname)) | length = 5) (lookup('vars', PARAMS_vmname)) + none else (lookup('vars', SUBTOPO_PARAMS_simname)) }}"
如果我仅在else语句中使用-可以正常工作。
如果我包含了elif
条件,则显示以下错误-"msg": "template error while templating string: expected token 'end of print statement', got 'elif'.
答案 0 :(得分:0)
下面是if-elif-else-endif
jinja语句对我有用。
您显然需要对此命令进行更改,但请确保在需要的地方使用引号"
或'
。
"{% if <your condition> %}<your command or message>{% elif <your condition> %}<your command or message>{% else <your condition> %}<your command or message>{% endif %}"