Ansible Conditionals: Difference between revisions
Jump to navigation
Jump to search
(10 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=External= | =External= | ||
* https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html | * https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html | ||
* https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html#loops-and-conditionals | |||
=Internal= | =Internal= | ||
* [[Ansible Concepts#when|Ansible Concepts]] | * [[Ansible Concepts#when|Ansible Concepts]] | ||
Line 27: | Line 29: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=Logical Operators= | =Expressions= | ||
==Undefined Variables== | |||
{{Internal|Ansible_Concepts#Undefined_Variables|Undefined Variables}} | |||
Use <code>is defined</code>, <code>is not defined</code>. Do not attempt to dereference with "{{ ... }}" until it is established the variable is defined: | |||
<syntaxhighlight lang='yaml'> | |||
- name: Test whether a variable is not defined | |||
debug: | |||
msg: "some_var is not defined" | |||
when: some_var is not defined | |||
</syntaxhighlight> | |||
<syntaxhighlight lang='yaml'> | |||
- name: Test whether a variable is defined | |||
debug: | |||
msg: "some_var is defined" | |||
when: some_var is defined | |||
</syntaxhighlight> | |||
==Logical Operators== | |||
Parentheses can be used in expressions. | Parentheses can be used in expressions. | ||
==<tt>and</tt>== | ===<tt>and</tt>=== | ||
==<tt>or</tt>== | ===<tt>or</tt>=== | ||
==<tt>not</tt>== | ===<tt>not</tt>=== | ||
<syntaxhighlight lang='yaml'> | <syntaxhighlight lang='yaml'> | ||
- name: "info" | - name: "info" | ||
Line 38: | Line 57: | ||
msg: "Java was NOT updated" | msg: "Java was NOT updated" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==<tt><</tt>== | ===<tt><</tt>=== | ||
==<tt><=</tt>== | ===<tt><=</tt>=== | ||
==<tt>></tt>== | ===<tt>></tt>=== | ||
==<tt>>=</tt>== | ===<tt>>=</tt>=== | ||
==<tt>==</tt>== | ===<tt>==</tt>=== | ||
<syntaxhighlight lang='yaml'> | |||
- name: "info" | |||
when: java.vendor == "Amazon" and java.version == 11 | |||
debug: | |||
msg: "Java vendor is Amazon, Java version is 11" | |||
</syntaxhighlight> |
Latest revision as of 00:27, 17 December 2021
External
- https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html
- https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html#loops-and-conditionals
Internal
Overview
Tasks can be conditionally executed based on facts, registered variables or playbook or inventory variables. The conditional is introduced by the task configuration keyword when:
.
The variables must not be enclosed in Template:...
when used in when:
expressions.
- name: Download Amazon Corretto
get_url:
url: https://corretto.aws/downloads/latest/amazon-corretto-11-x64-macos-jdk.pkg
dest: /tmp
when: java_vendor == "Amazon"
- name: Install Nginx
apt:
pkg: nginx
state: installed
update_cache: true
when: ppastable|success
notify:
- Start Nginx
Expressions
Undefined Variables
Use is defined
, is not defined
. Do not attempt to dereference with "{{ ... }}" until it is established the variable is defined:
- name: Test whether a variable is not defined
debug:
msg: "some_var is not defined"
when: some_var is not defined
- name: Test whether a variable is defined
debug:
msg: "some_var is defined"
when: some_var is defined
Logical Operators
Parentheses can be used in expressions.
and
or
not
- name: "info"
when: not java_updated
debug:
msg: "Java was NOT updated"
<
<=
>
>=
==
- name: "info"
when: java.vendor == "Amazon" and java.version == 11
debug:
msg: "Java vendor is Amazon, Java version is 11"