ANSIBLE SERIES: h.t.wrt* … DYNAMIC: includes (roles, tasks, vars)
Antes de prosseguir: PARE, RETORNE E LEIA a primeira parte sobre reuso de playbooks e seus elementos básicos, sendo aquela a forma estática. A seguir, a parte 02 ensinando como fazê-lo de maneira dinâmica. Bons estudos!
REUSANDO FILES E ROLES
Citar ou incluir roles, files e variáveis dentro de um playbook, automaticamente os torna parte deste, dinamicamente falando. Isso quer dizer que o Ansible os processa à medida que a execução se desenrola, ou seja, tarefas que foram incluídas podem sim ser afetadas por outras anteriores e que estão um nível acima naquele mesmo playbook. O que as torna muito semelhantes aos manipuladores (handlers), pois assim elas podem ou não serem executadas/acionadas, dependendo é claro do resultado das outras tarefas “irmãs”, sendo que as últimas precisam sempre estar precursoras às primeiras.
Sabendo disso, a principal vantagem de usar instruções do tipo include_* diz respeito aos loops. Quando combinamos laços de repetição e inclusões (loops + includes), as tarefas e funções “herdadas” de outrem serão executadas pelo menos uma vez para cada item no loop.
Os nomes de arquivo para funções, tarefas e vars incluídos são modelados antes de ocorrer a inclusão em si. Também é possível passar variáveis dentro de inclusões.
REUSANDO TAREFAS COMO SE FOSSEM MANIPULADORES
Bastante similar ao exemplo equivalente da primeira parte (estática), temos o seguinte arquivo:
# restarts.yml
- name: Restart apache
ansible.builtin.service:
name: apache
state: restarted
- name: Restart mysql
ansible.builtin.service:
name: mysql
state: restarted
O que difere ambos é a lógica apresentada, pois aqui as inclusões são executadas em tempo real, portanto, o nome da inclusão existe durante a reprodução, enquanto que o restante não. Ou seja, as tarefas incluídas apenas aguardam, até o momento em que a própria inclusão sofra um gatilho (seja acionada) Por exemplo:
- name: Trigger an included (dynamic) handler
hosts: localhost
handlers:
- name: Restart services
include_tasks: restarts.yml
tasks:
- command: "true"
notify: Restart services
IMPORTS versus INCLUDES: COMPARANDO tabela
Cada abordagem para reutilizar artefatos distribuídos tem vantagens e limitações. Você pode escolher a reutilização dinâmica para alguns playbooks e a reutilização estática para outros. Embora você possa usá-las ao mesmo tempo em um único playbook, é melhor escolher apenas uma por vez. Misturar reutilização estática e dinâmica pode introduzir bugs difíceis de diagnosticar em seus manuais. Esta tabela resume as principais diferenças para que você possa escolher a melhor abordagem para cada manual que criar.

>_ REFERÊNCIAS:
https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse.html