ansible.builtin.ternary 过滤器 – 三元运算过滤器

注意

此过滤器插件是 ansible-core 的一部分,并包含在所有 Ansible 安装中。在大多数情况下,您可以使用简短的插件名称 ternary。但是,我们建议您使用完全限定集合名称 (FQCN) ansible.builtin.ternary,以便轻松链接到插件文档并避免与其他可能具有相同过滤器插件名称的集合冲突。

概要

  • 如果输入为 True,则返回第一个值;如果为 False,则返回第二个值。

输入

这描述了过滤器的输入,即 | ansible.builtin.ternary 之前的值。

参数

注释

输入

布尔值 / 必需

一个布尔表达式,必须求值为 TrueFalse

选择

  • false

  • true

位置参数

这描述了过滤器的位置参数。这些值是以下示例中的 positional1positional2 等:input | ansible.builtin.ternary(positional1, positional2, ...)

参数

注释

true_val

任意 / 必需

如果输入为 True,则返回的值。

false_val

任意

如果输入为 False,则返回的值。

关键字参数

这描述了过滤器的关键字参数。这些值是以下示例中的 key1=value1key2=value2 等:input | ansible.builtin.ternary(key1=value1, key2=value2, ...)

参数

注释

none_val

任意

在 Ansible 2.8 中添加

如果输入为 None,则返回的值。如果未设置,None 将被视为 False

注释

注意

  • 当关键字参数和位置参数一起使用时,位置参数必须在关键字参数之前列出:input | ansible.builtin.ternary(positional1, positional2, key1=value1, key2=value2)

  • 即使不返回值,也会评估作为值的变量。这是因为它们在传递到过滤器之前被评估。

示例

# set first 10 volumes rw, rest as dp
volume_mode: "{{ (item|int < 11)|ternary('rw', 'dp') }}"

# choose correct vpc subnet id, note that vars as values are evaluated even if not returned
vpc_subnet_id: "{{ (ec2_subnet_type == 'public') | ternary(ec2_vpc_public_subnet_id, ec2_vpc_private_subnet_id) }}"

- name: service-foo, use systemd module unless upstart is present, then use old service module
  service:
    state: restarted
    enabled: yes
    use: "{{ (ansible_service_mgr == 'upstart') | ternary('service', 'systemd') }}"

返回值

描述

返回值

任意

输入所指示的值。

返回: 成功

作者

  • Brian Coca (@bcoca)

提示

每种条目类型的配置条目都具有从低到高的优先级顺序。例如,列表中较低的变量将覆盖较高的变量。