Não é possível fornecer uma resposta exata à sua pergunta por razões óbvias, mas deixe-me pelo menos apontar alguns bits, alguns deles serão facilmente compreensíveis do ponto de vista de um programador:
-
Mantenha dados e lógica separados.
ansible
fornece os meios para tornar isso uma tarefa fácil, mas você precisa criar suas funções de maneira funcional, ou seja, tornar suas funções configuráveis por meio de dados. -
Escreva seus papéis para que eles façam uma coisa só, mas façam bem. Isso melhora a reutilização de suas funções e facilita a manutenção no futuro.
-
Ao definir os dados que guiarão o comportamento de suas funções, não crie estruturas de dados complicadas.
ansible
tem muitos iteradores que você pode usar e até fornece a capacidade de escrever os seus, mas se você precisar de algo mais complicado quewith_subelements
, é hora de repensar suas estruturas de dados. -
Use tags. Você pode definir ações usando uma combinação de grupos e tags.
-
Use
register
s para capturar o resultado de suas ações e usá-las em ações subsequentes para controlar o fluxo usando as instruçõeswhen
. Não complique as condições, no entanto. -
set_facts
eassert
podem ajudar a coletar dados sobre o status do sistema de destino. -
Idempotência. Mantenha suas ações idempotentes para que você elimine a necessidade de construir muita lógica em suas ações. Pense em termos de staus de destino (estado desejado) e não em termos de linguagem procedural.