2015-03-12 2 views
1

У меня есть куча сервисов, которые построены и развернуты с возможностью доступа. Каждый сервис управляется собственной командой, имеет отдельный репозиторий и полностью независим друг от друга. У меня есть некоторые роли, которые одинаковы во всех сервисах (например, установленные пакеты, веб-серверы и т. Д.). Есть ли способ абстрагировать такие роли, например, в другом репозитории или каком-то пакете и включать их как зависимость в другую важную роль?Как абстрактные роли в незаменимом

Пример:

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 

Я хочу, чтобы выглядеть следующим образом:

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 

ответ

3

Это походит на то, что вы хотите сделать, это создать общую роль в качестве dependency. Создание каталогов roles/service-foo/meta и roles/service-bar/meta и в каждом из этих каталогов добавить main.yml, выводящий зависимую роль (ы):

--- 
dependencies: 
    - { role: common } 

common только одна роль хранится в каталоге ролей. Если вы хотите получить фантазию, то зависимые роли могут быть вытащены непосредственно из github и т. Д. Документация Ansible, с которой я связан, содержит все детали.