Jak uruchomić wiele podręczników w Ansible?

16

Pracuję nad kilkoma poradnikami Ansible, aby rozwinąć nową instancję serwera. Istnieje około 15 różnych podręczników, które muszę uruchomić w określonej kolejności, aby pomyślnie uruchomić serwer.

Moją początkową myślą było napisanie wykonującego się skryptu powłoki ansible-playbook playbook_name.ymli skopiowanie go z jednego wpisu dla każdego podręcznika, który muszę uruchomić.

Czy istnieje mądrzejszy / lepszy sposób, aby to zrobić za pomocą głównego podręcznika, a jeśli tak, to jak by to wyglądało (przykłady są doceniane).

Mógłbym napisać jeden monolityczny poradnik, który to wszystko robi, ale niektóre gry uruchamiane są najpierw jako root, a później jako użytkownik sudo.

nulltek
źródło
2
użyj dołącz do
c4f4t0r 21.01.16
1
Aby obsłużyć przypadek uruchamiania jako root, a następnie jako użytkownik sudo, możesz użyć funkcji blokowania - umieść become:część na końcu każdego bloku. Może być jednak konieczne utworzenie nowej gry, aby przełączyć użytkownika połączenia z użytkownika root na użytkownika sudo.
RichVel,

Odpowiedzi:

15

Zbuduj wiele podrozdziałów i agreguj je za pomocą instrukcji dołączania.

- include: playbook-one.yml
- include: playbook-two.yml

Jeśli twoje podręczniki muszą być uruchamiane w kolejności i jeśli wszystkie są obowiązkowe, zbuduj główny i dołącz pliki z zadaniami. Poradnik powinien zawsze być procesem zamkniętym.

flxPeters
źródło
2
czy mógłbyś rozwinąć ostatnią część swojej odpowiedzi? co rozumiesz przez „Poradnik powinien zawsze być procesem zamkniętym”. ?
Mike Vella,
1
Czy istnieje sposób na określenie wszystkich podręczników za pomocą wyrażeń regularnych? Na przykład:- include : books/*.yml
blueskin
8
Wygląda na includeto, że jest przestarzałe. docs.ansible.com/ansible/latest/playbooks_reuse.html Myślę, że import_playbook: footo właściwy sposób, ale nie jestem zbyt doświadczony.
Andrew
11

W przypadku nowszych wersji Ansilbe możesz budować wiele podrozdziałów i agregować je za pomocą instrukcji import_playbook:

---
- import_playbook: A-systemd-networkd.yml
- import_playbook: B-fail2ban-ssh.yml
- import_playbook: C-enable-watchdog.yml
Peter Senna
źródło