Tenho um Playbook de controle que busca dados de grupo de uma API durante o tempo de execução. Com base nesses grupos, quero adicionar Plays dinamicamente à execução (com Hosts e Vars diferentes).
Pelo que entendi, era para isso que servia o módulo "include". No entanto, a documentação diz que ele está obsoleto. Então, agora me pergunto: qual é uma maneira à prova de futuro de adicionar Plays dinamicamente em tempo de execução?
"include_tasks" não resolverá o problema, pois as tarefas incluídas pertencerão ao mesmo Play e, portanto, usarão os mesmos Hosts.
Não é possível incluir um playbook. Só há a opção de importação disponível. Consulte ansible.builtin.import_playbook .
Não é possível importar nada dinamicamente. Um objeto de importação (tarefa, função, manual) deve ser importado antes do início da execução. Consulte Reutilizando artefatos do Ansible .
O Ansible Runner pode ser usado para executar playbooks dinamicamente.
P: "Os Playbooks existem antes do tempo de execução."
R: Um manual deve existir antes do tempo de execução.
P: "O manual de controle precisa decidir qual incluir no tempo de execução."
R: Ainda o mesmo.
It is not possible to include a playbook. There is only the import available.
O manual de "controle" (nível superior) não controla nada além de umawhen
condição opcional. Por exemplo,Citando Sinopse :
A formulação da documentação oficial é enganosa. Não há
include
...P: "Isso é possível com o módulo include."
R: Não. Não é possível com o módulo include. Uma peça deve ser importada
at the top level
.You cannot use this action inside a play.
Resumo: