This page is not available in every language. Missing translations are disabled in the language selector.

Quick reference

Ansible Roles Structure & Design Cheat Sheet

A quick reference guide for Ansible roles directory layout, tasks, handlers, variables, defaults, templates, and meta dependencies.

· Published

Ansible Roles provide a standardized way to package and modularize automation tasks, handlers, variables, and templates for clean reusability.

🔗 Related: Ansible Core Cheat Sheet · Ansible Quickstart Guide · Ansible Playbook Examples

Standard Role Directory Layout

Generate a scaffolded role layout using ansible-galaxy init <role_name>:

roles/
  common/
    tasks/
      main.yml          # Primary entry point for tasks executed by the role
    handlers/
      main.yml          # Handlers triggered via notify
    templates/          # Jinja2 templates (.j2) referenced by template module
    files/              # Static assets and scripts transferred via copy module
    vars/
      main.yml          # High-precedence variables specific to this role
    defaults/
      main.yml          # Default low-precedence variables (overrideable)
    meta/
      main.yml          # Role dependencies and author metadata

Using Roles in Playbooks

---
- name: Apply common and webserver roles
  hosts: webservers
  become: true
  roles:
    - role: common
    - role: nginx
      vars:
        nginx_port: 8080

Variable Precedence in Roles

Variables defined in defaults/main.yml have the lowest precedence in Ansible, making them safe defaults that users can easily override via inventory or playbook vars.

Variables in vars/main.yml have high precedence and are reserved for role-internal constant logic.


References

Related topics