ansible.builtin.ternary 过滤器 – 三元运算过滤器
注意
此过滤器插件是 ansible-core
的一部分,并包含在所有 Ansible 安装中。在大多数情况下,您可以使用简短的插件名称 ternary
。但是,我们建议您使用完全限定集合名称 (FQCN) ansible.builtin.ternary
,以便轻松链接到插件文档并避免与其他可能具有相同过滤器插件名称的集合冲突。
概要
如果输入为
True
,则返回第一个值;如果为False
,则返回第二个值。
输入
这描述了过滤器的输入,即 | ansible.builtin.ternary
之前的值。
参数 |
注释 |
---|---|
一个布尔表达式,必须求值为 选择
|
位置参数
这描述了过滤器的位置参数。这些值是以下示例中的 positional1
、positional2
等:input | ansible.builtin.ternary(positional1, positional2, ...)
参数 |
注释 |
---|---|
如果输入为 |
|
如果输入为 |
关键字参数
这描述了过滤器的关键字参数。这些值是以下示例中的 key1=value1
、key2=value2
等:input | ansible.builtin.ternary(key1=value1, key2=value2, ...)
参数 |
注释 |
---|---|
如果输入为 |
注释
注意
当关键字参数和位置参数一起使用时,位置参数必须在关键字参数之前列出:
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') }}"
返回值
键 |
描述 |
---|---|
输入所指示的值。 返回: 成功 |