At a basic level, playbooks can be used to manage configurations of and
deployments to remote machines. At a more advanced level, they can
sequence multi-tier rollouts involving rolling updates, and can delegate
actions to other hosts, interacting with monitoring servers and load
balancers along the way.

## tests/test_myapp.yml-include:../install_myapp.yml-hosts:myapp-hoststasks:-name:config file is only readable by ownerfile:path:/etc/myapp/myapp.confmode:0400state:filetags:test-name:fetch content of myapp.logcommand:cat /var/log/myapp.logregister:myapp_logchanged_when:False-name:myapp.log contains no errorsassert:that:"'ERROR'notinmyapp_log.stdout"tags:test

To keep playbooks organized in a consistent manner and make them reusable,
Ansible provides the concept of Ansible Roles.
An Ansible role is defined as a directory (named after the role) with
subdirectories named by convention:

role/
defaults/
files/
handlers/
meta/
tasks/
templates/
vars/

When writing tests for your role, goodplay expects another subdirectory
by convention:

role/
...
tests/

By following this convention, goodplay takes care of making the Ansible
role available on the Ansible Roles Path, so you can use them directly in
your test playbook.