Roles

Role

A role is a directory with specified contents. The role directory must be in one of the directories on the roles_path and its name is used to refer to the role elsewhere.

Complete list of possible keywords

Inside the role’s top-level directory, you might see a tree like this (most of this is optional).

defaults/main.yml

variables within will be defined at the lowest priority (can be overridden by variables declared anywhere else, even inventory variables)

files/

Any copy tasks can reference files in roles/x/files/ without having to path them relatively or absolutely

Any script tasks can reference scripts in roles/x/files/ without having to path them relatively or absolutely

handlers/main.yml

handlers listed therein will be added to the play

library/

modules here (directories) will be available in the role, and any roles called after this role

meta/main.yml

Role dependencies file

tasks/main.yml

Tasks file

Any include tasks can reference files in roles/x/tasks/ without having to path them relatively or absolutely

templates/

Any template tasks can reference files in roles/x/templates/ without having to path them relatively or absolutely

vars/main.yml

variables listed therein will be added to the play. These override almost any other variables except those on the command line, so this is really better for the role’s “constants” than variables :-)

Role dependencies file

Syntax

YAML file

Templating

Jinja2

Contents

A dictionary

The role dependencies file defines what other roles this role depends on.

Keys:

dependencies

A list of Dependency dictionary s

allow-duplicates

yes|no

Defaults to no, preventing the same role from being listed as a dependency more than once. Set to yes if you want to list the same role with different variables.

Example:

---
dependencies:
  - role: role1
  - role: role2
    varname: value

Dependency dictionary

Required keys:

role

name of role, or quoted path to role file, or quoted repo URL:

role: postgres

role: ‘/path/to/common/roles/foo’

role: ‘git+http://git.example.com/repos/role-foo,v1.1,foo’

role: ‘/path/to/tar/file.tgz,,friendly-name’

Optional keys: any parameters for the role - these define When/how variables are resolved

Embedding modules in roles