Roles (structures, defaults, and dependencies)
With a functional understanding of the inclusion of variables, tasks, handlers, and playbooks, we can move on to the more advanced topic of roles. Roles bring together these different facets of Ansible code creation to provide a fully independent collection of variables, tasks, files, templates, and modules that can be reused over again in different playbooks. Although not limited as such by design, it is normal practice for each role to be typically limited to a particular purpose or desired end result, with all the necessary steps to reach that result either within the role itself or through dependencies (in other words, further roles that themselves are specified as dependencies of a role). It is important to note that roles are not playbooks, and there is no way to directly execute a role. Roles have no settings for which host(s) the role will apply to. Top-level playbooks are the glue that binds the hosts from your...