In Ansible, logical operators allow you to combine multiple conditions in the when clause of your tasks. This enables more complex decision-making in your playbooks. The primary logical operators you can use are:
- AND (
and): Both conditions must be true for the task to execute. - OR (
or): At least one of the conditions must be true for the task to execute. - NOT (
not): The condition must be false for the task to execute.
Examples
Using and
You can use and to check if multiple conditions are true:
- name: Install package if Debian and version is 10
apt:
name: package_name
state: present
when: ansible_os_family == "Debian" and ansible_distribution_version == "10"
In this example, the task will only run if the OS is Debian and the version is 10.
Using or
You can use or to check if at least one of the conditions is true:
- name: Install package for Debian or Ubuntu
apt:
name: package_name
state: present
when: ansible_os_family == "Debian" or ansible_os_family == "Ubuntu"
Here, the task will run if the OS is either Debian or Ubuntu.
Using not
You can use not to negate a condition:
- name: Skip task if not Ubuntu
debug:
msg: "This is not an Ubuntu system"
when: ansible_os_family != "Ubuntu"
In this case, the task will execute only if the OS is not Ubuntu.
Combining Operators
You can combine these operators for more complex conditions:
- name: Conditional task with multiple checks
debug:
msg: "This is a Debian-based system and not version 9"
when: ansible_os_family == "Debian" and ansible_distribution_version != "9"
Further Learning
To practice using logical operators in Ansible, consider exploring relevant labs on LabEx that focus on playbook development and conditionals.
If you have more questions or need further clarification, feel free to ask! Your feedback is always appreciated.
