如果Ansible剧本中有条件,则内联jinja2

时间:2019-09-26 23:23:03

标签: ansible jinja2

我无法运行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'.

1 个答案:

答案 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 %}"