Ansible Pattern: Meta Role

This pattern is used to provide a quick way to include multiple roles at once. For example if you have a group of things that every server needs, you could use a meta role to include those things with one line.

So lets say you have three roles for every machine named users, ssh and logs_to_syslog_server. You can include them all by making a role named common. In that common role you make a file named meta/main.yml and put the following contents in it.

---
dependencies:
  - role: users
  - role: ssh
  - role: logs_to_syslog_server

The on every host you simply add the common role.

roles:
  - role: common
    tags: [common]

and suddenly you get all the common roles. You can also run with -t common to run all the common rules. This is handy if something global to your infrastructure is updated and you would like all hosts to receive the update.

comments powered by Disqus