【问题标题】:Inline jinja2 if condition in Ansible playbookAnsible playbook 中的内联 jinja2 if 条件
【发布时间】:2019-09-26 23:23:03
【问题描述】:

我无法运行 Ansible playbook 中的内联 elif jinja 语句。我玩过如下图

vm_number 是动态生成的,有一个 vars 文件,其中包含每个 vm 的值(例如:“PARAMS_vm_1”)。

PARAMS_vm_1:
- 知识产权
- 名称
- fqdn
- 操作系统
- 位置

状况:
= 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'.

【问题讨论】:

    标签: ansible jinja2


    【解决方案1】:

    下面是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 %}"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 2019-03-01
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      相关资源
      最近更新 更多