Ansible ha i concetti di ruoli e dipendenze che possono essere usati insieme per creare un modello ruoli / profili / componenti come si fa in Puppet. Potresti progettare il tuo ruolo come componente, come profilo o come ruolo. Probabilmente avresti bisogno di una struttura di convenzioni di denominazione per non confondermi sulla differenza tra loro. Se vuoi creare un ruolo di server web (modello di burattini) puoi avere 5 ruoli (ruoli ansibili), componente-apache, componente-mysql, profilo-database, profilo-webserver, ruolo-server web. I primi due saranno ruoli che installano e configurano un software generico apache / mysql (dovresti trovarlo su ansible-galaxy). I 2 profili aggiungeranno questi 2 componenti come dipendenze (in meta /) e specificheranno esattamente la tua implementazione tramite vars o task (dovrei supportare virtualhost? Il mio profilo mysql funzionerà come cluster?). Alla fine, crei l'ultimo ruolo (ansible) che funzionerà come un ruolo (modello di burattini). Aggiungerà come dipendenze i tuoi 2 profili (profilo-database, profilo-webserver).
Alla fine, sul tuo playbook, devi solo applicare il ruolo-server web ai nodi specificati.