Task, handler, variable, and playbook include concepts
The first step to understanding how to efficiently organize an Ansible project structure is to master the concept of including files. The act of including files allows content to be defined in a topic specific file that can be included into other files one or more times within a project. This inclusion feature supports the concept of Don't Repeat Yourself (DRY).
Including tasks
Task files are YAML
files that define one or more tasks. These tasks are not directly tied to any particular play or playbook; they exist purely as a list of tasks. These files can be referenced by playbooks or other task files by way of the include
operator. This operator takes a path to a task file, and as we learned in Chapter 1, System Architecture and Design of Ansible, the path can be relative from the file referencing it.
To demonstrate how to use the include
operator to include tasks, let's create a simple play that includes a task file with some debug tasks...