DOCUMENTATION: name: ternary author: Brian Coca (@bcoca) version_added: '1.9' short_description: Ternary operation filter description: - Return the first value if the input is C(True), the second if C(False). positional: true_val, false_val options: _input: description: A boolean expression, must evaluate to C(True) or C(False). type: bool required: true true_val: description: Value to return if the input is C(True). type: any required: true false_val: description: Value to return if the input is C(False). type: any none_val: description: Value to return if the input is C(None). If not set, C(None) will be treated as C(False). type: any version_added: '2.8' notes: - Vars as values are evaluated even when not returned. This is due to them being evaluated before being passed into the filter. EXAMPLES: | # 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') }}" RETURN: _value: description: The value indicated by the input. type: any