2015-03-12 6 views
1

J'ai un tas de services, qui sont construits et déployés avec ansible. Chaque service est géré par sa propre équipe, possède un référentiel séparé et est complètement indépendant l'un de l'autre. J'ai des rôles ansibles qui sont les mêmes dans tous les services (comme les paquets installés, les serveurs web, etc.). Existe-t-il un moyen d'abstraire de tels rôles, par exemple dans un référentiel différent ou un type de package, et de les inclure en tant que dépendance dans un autre rôle ansible?Comment faire pour résumer les rôles dans ansible

Exemple:

service-foo/ 
    play.yml – includes all roles 
    roles/ 
    common – the same! 
    db-foo 
    web-foo 

service-bar/ 
    play.yml – includes all roles 
    roles/ 
    common – the same! 
    db-bar 
    web-bar 

Je veux qu'il ressemble à ceci:

role-storage? 
    common 

service-foo/ 
    play.yml - includes common as external dependency as well 
    roles/ 
    db-foo 
    web-foo 

service-bar/ 
    play.yml - includes common as external dependency as well 
    roles/ 
    db-bar 
    web-bar 

Répondre

3

Cela ressemble à ce que vous voulez faire est de mettre en place le rôle commun comme dependency. Créer les répertoires roles/service-foo/meta et roles/service-bar/meta et dans chacun de ces répertoires ajouter un main.yml qui répertorie le rôle dépendant (s):

--- 
dependencies: 
    - { role: common } 

common est juste un autre rôle stocké dans votre répertoire de rôles. Si vous voulez avoir de la fantaisie, les rôles dépendants peuvent être tirés directement de github, etc. La documentation Ansible à laquelle je me suis connecté fournit tous les détails.