Ansible

Ansible Role_Path

Ansible, an open-source configuration management and orchestration tool, provides us with an excellent role feature to help manage our playbooks more efficiently. But what if we store the roles in different locations than the default location?

When you get to the point of creating more complex Ansible configurations, you are likely to find yourself splitting them into different roles and are stored across different directories.

Luckily, we have the role_path variable in Ansible that allows us to define multiple locations for our roles which can make the playbooks more flexible and adaptable across multiple projects.

Setting Up

Before diving into the tutorial, ensure that you have the following:

  • Installed Ansible
  • Basic knowledge of Ansible playbooks and tasks

Ansible Role_Path Variable

The roles_path configuration specifies the directories that Ansible looks in for roles. Think of it like the $PATH variable in Linux where the system looks in multiple directories for executables.

By default, Ansible checks the roles in /etc/ansible/roles. However, we can customize this by defining the roles_path in the “ansible.cfg” file or using the -roles-path command-line parameter.

Using the Ansible Configuration File

To set the role_path in the Ansible configuration file, edit the “ansible.cfg” file and add the entry as follows:

[defaults]
roles_path = /path/to/your/roles:/another/path/to/roles

The directories are separated by colons. Ansible now looks in all the provided directories for roles when we reference them in a playbook.

Using the Command Line

In other cases, we may want to specify the role path in a command. We can use the command syntax as follows:

$ ansible-playbook playbook.yml -roles-path /path/to/your/roles:/another/path/to/roles

Conclusion

You learned how to work the Ansible role_path parameter. Understanding and utilizing the roles_path can provide flexibility in structuring your projects and allows for more efficient role-sharing and reuse.

About the author

John Otieno

My name is John and am a fellow geek like you. I am passionate about all things computers from Hardware, Operating systems to Programming. My dream is to share my knowledge with the world and help out fellow geeks. Follow my content by subscribing to LinuxHint mailing list