Playbook Conditionals in Ansible
1. Introduction
In Ansible, playbooks are used to define a series of tasks to be executed on managed nodes. Conditionals allow you to control whether a task should be executed based on certain criteria.
2. Conditional Statements
Conditional statements in Ansible are primarily used to determine whether a task should run. The most common way to implement conditionals in Ansible is through the `when` clause.
3. Using the `when` Clause
The `when` clause is used to specify a condition that must be met for a task to execute. This condition can be based on facts, variables, or results of previous tasks.
- name: Install package only if it is not already installed
apt:
name: nginx
state: present
when: ansible_distribution == 'Ubuntu'
4. Example Playbook
Below is an example of a simple playbook that demonstrates conditionals.
---
- hosts: all
tasks:
- name: Ensure nginx is installed
apt:
name: nginx
state: present
when: ansible_os_family == 'Debian'
- name: Start nginx service
service:
name: nginx
state: started
when: ansible_service_mgr == 'systemd'
5. Best Practices
- Use descriptive variable names to enhance readability.
- Keep conditions simple and straightforward.
- Test conditions to ensure they are correctly applied.
- Combine multiple conditions using logical operators (`and`, `or`).
6. FAQ
What is the purpose of the `when` clause?
The `when` clause determines if a task should be executed based on a provided condition.
Can I use multiple conditions in a `when` statement?
Yes, you can combine multiple conditions using logical operators such as `and` and `or`.
Are there any limitations to using conditionals?
Conditions should be simple to avoid confusion. Complex logic can lead to maintenance issues.