Inline jinja2 if condition in Ansible playbook



我无法从 Ansible playbook 运行内联 elif jinja 语句。我已经玩过如下所示

vm_number动态生成的,则有 vars 文件,其中包含每个 vm 的值(例如:"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)) }}"

如果我只使用 if else 语句 - 它工作正常。

如果我包含elif条件,它会显示以下错误 -"msg": "template error while templating string: expected token 'end of print statement', got 'elif'.

下面是 jinja 语句对我有用的if-elif-else-endif

您显然需要对此命令进行更改,但请确保在需要时使用引号"'

"{% if <your condition> %}<your command or message>{% elif <your condition> %}<your command or message>{% else <your condition> %}<your command or message>{% endif %}"

最新更新