Wpis z mikrobloga

Nie wiem jak powinno się obsługiwać zależności modułów (requirements). Załóżmy, że chcę używać modułów git albo make, w wielu rolach, ale nie mam pewności czy programy git i make są zainstalowane na hoście. Jeżeli nie są, to chce je zainstalować z repozytorium. Czy jest jakiś mądrzejszy sposób obsłużenia tego, niż stworzenie ról "git" oraz "make", które instalują tylko swój jeden pakiet i umieszczenie ich w zależnościach wszystkich ról, które używają wspomnianych modułów? Wydaje mi się to strasznym overkilem, bo musiałbym tak obsłużyć zależności praktycznie każdego modułu, którego zamierzam użyć.
#ansible
  • 3
@CamelCase: w tym przypadku musisz spełnić tę zależność modułu sam. Czyli tak, napisz sobie rolę która doinstaluje git i make. Piszesz jakby to był faktycznie obrzydliwy overkill, ale moim zdaniem przesadzasz. To jest kilka linii yamla..

Zrób sobie generyczną rolę instalującą najbardziej typowe narzędzia jakich potrzebujesz na serwerze. W praktyce to pewnie będzie raptem jeden task package/yum/apt z listą pakietów w with_items. W razie potrzeby dodaj jakieś warunki na flagi (zmienne
@annotate: Dziękuję Ci za odpowiedź, to co napisałeś zdecydowanie ma sens. Podsunąłeś mi jeszcze inny pomysł i zastanawiam się, czy jest wykonalny.

Można stworzyć osobną rolę "repo", która będzie w zależnościach wszystkich ról potrzebujących zainstalowanych pakietów (ich lista jest przyjmowana jako argument). W skrajnym przypadku wywoła się dla każdej roli (jeżeli każda rola będzie wymagać innego zbioru paczek). Jeżeli natomiast będzie 10 ról potrzebujących tylko zainstalowanego gita, to "repo" uruchomi się
@CamelCase: Ja jednak wolałbym mieć instalowanie paczek potrzebnych danej roli wewnątrz niej samej, by była spójna i kompletna. Ale jeśli upierasz się by to rozdzielić to w sumie czemu nie, choć nie wiem czy zysk czasowy będzie aż tak duży.

Np.: dawać jedną rolę w wielu innych jako dependency (Twój rola "repo"). Ona niech nie przyjmuje nawet żadnych parametrów ale instaluje po kolei wszystkie popularne zestawy pakietów tylko z warunkiem when