Ansible Roles
Ansible Roles
Roles provide a framework for fully independent, or interdependent collections of variables, tasks, files, templates, and modules.
In Ansible, the role is the primary mechanism for breaking a playbook into multiple files. This simplifies writing complex playbooks, and it makes them easier to reuse. The breaking of the playbook allows you to logically break the playbook into reusable components.
Each role is basically limited to a particular functionality or desired output, with all the necessary steps to provide that result either within that role itself or in other roles listed as dependencies.
Roles are not playbooks. Roles are small functionality that can be independently used but have to be used within playbooks. There is no way to directly execute a role. Roles have no explicit setting for which host the role will apply to.
Top-level playbooks are the bridge holding the hosts from your inventory file to roles that should be applied to those hosts.
Utilizing Roles in Playbook
This is the code of the playbook we have written for demo purposes. This code is of the playbook zippyops_orchestrate.yml. We have defined the hosts: tomcat-node and called the two roles – install-tomcat and start-tomcat.
The problem statement is that we have a war that we need to deploy on a machine via Ansible.
---
- hosts: tomcat-node
roles:
- {role: install-tomcat}
- {role: start-tomcat}
Breaking a Playbook into a Role
If not for the roles, the content of the main.yml of the respective role can be copied in the playbook YAML file. But to have modularity, roles were created.
Any logical entity which can be reused as a reusable function, that entity can be moved to a role. The example for this is shown above
Ran the command to run the playbook.
-vvv option for verbose output – verbose output
$ cd zippyops-playbook/
This is the command to run the playbook
$ sudo ansible-playbook -i hosts zippyops_orchestrate.yml –vvv
Relavant Blogs:
Recent Comments
No comments
Leave a Comment
We will be happy to hear what you think about this post