Table of contents
Introduction
Role variables and defaults play a vital role in defining dynamic values and customizing behavior within Ansible roles. Let's explore role variables, defaults, and their management with examples to understand their functionality better.
Defining Role Variables
Role variables can be defined within the vars/
directory of a role to customize behavior and configuration.
Example: Let's define a variable apache_port
in the web_server
role to specify the Apache web server port.
vars/main.yml:
---
apache_port: 80
Using Role Variables:
Role variables can be accessed within tasks, handlers, templates, and other files using Jinja2 templating syntax.
Example: Let's use the apache_port
variable in a task within the web_server
role.
tasks/main.yml:
---
- name: Configure Apache port
lineinfile:
path: /etc/apache2/apache2.conf
regexp: '^Listen '
line: 'Listen {{ apache_port }}'
notify: Restart Apache service
Defining Defaults
Default variables for a
role can be defined within the defaults/
directory to provide initial values that can be overridden by users if needed.
Example: Let's define a default variable apache_default_index
in the web_server
role to specify the default index file for Apache web server.
defaults/main.yml:
---
apache_default_index: index.html
Using Defaults:
Default variables can be accessed within tasks, handlers, templates, and other files like regular variables.
Conclusion
Role variables and defaults are essential components of Ansible roles, allowing for customization and flexibility in automation workflows. By defining variables and defaults within a role directory, users can create more robust, flexible, and reusable Ansible roles that meet the needs of their infrastructure environments.