如何在带有变量的 YAML 中使用 IF ELSE?

How to use IF ELSE in YAML with variable?

我正在使用 Ansible Tower 的 YAML 文件,其中包含以下信息

- name: "Package Deployment"
  block:
    - name: "Update package {{ package }}"
      yum:
        update_cache: True
        update_only: True
        name: "{{ package }}{{ '' if (version is not defined or version == 'latest') else '-{{ version }}' }}"
        state: "{{ state|default('latest' if version == 'latest' else 'present') }}"
      become: true

当我传递 YAML 变量时

package: package
version: latest

然后它打印 package 但如果我将 YAML 变量传递为

package: package
version: 22

然后打印 package-{{ version }} 而不是 package-22

使用下面的字符串替换您的:

{{ '' if (version is not defined or version == 'latest') else '-' + version }}

注意version必须定义为string类型,否则需要添加string cast。