Как да абстрахирате роли в ansible

Имам куп услуги, които са изградени и внедрени с ansible. Всяка услуга се управлява от собствен екип, има отделно хранилище и са напълно независими една от друга. Имам някои анзибилни роли, които са еднакви във всички услуги (като инсталирани пакети, уеб сървъри и т.н.). Има ли някакъв начин да се абстрахират такива роли, например в различно хранилище или някакъв вид пакет и да се включат като зависимост в друга анзибилна роля?

Пример:

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

person Andrey Neverov    schedule 12.03.2015    source източник


Отговори (1)


Изглежда, че това, което искате да направите, е да настроите общата роля като зависимост . Създайте директориите roles/service-foo/meta и roles/service-bar/meta и във всяка от тези директории добавете main.yml, който изброява зависимите роли:

---
dependencies:
    - { role: common }

common е просто още една роля, съхранена във вашата директория с роли. Ако искате да станете фантазия, тогава зависимите роли могат да бъдат изтеглени директно от github и т.н. Документацията на Ansible, към която се свързах, предоставя всички подробности.

person Bruce P    schedule 12.03.2015