2015-04-27 12 views
30

Podczas tworzenia i debugowania ansibl playbooks, typowy przepływ pracy jest następujący:Jak kontynuować wykonywanie po nieudanym zadaniu po naprawieniu błędu w książce?

  1. ansible-playbook ./main.yaml
  2. Playbook nie na jakieś zadanie
  3. Fix to zadanie i powtarzać linii 1, czekając na wszystkie poprzednie zadania ponowne uruchomienie. Który zajmuje dużo czasu

Idealnie chciałbym wznowić wykonanie nieudanego zadania, mając inwentarz i wszystkie fakty zebrane przez poprzednie zadania. Czy to możliwe? Jak przyspieszyć pisanie/debugowanie playbooka?

Odpowiedz

21

Spójrz na http://docs.ansible.com/playbooks_startnstep.html. Jeśli chcesz zacząć realizować swoje playbook w danym zadaniu, można to zrobić za pomocą opcji --start-at-task:

ansible-playbook playbook.yml --start-at-task="install packages" 

Powyższy rozpocznie wykonywanie swoje playbook w zadaniu o nazwie „Instalacja pakietów”.

Alternatywnie, przyjrzeć się tej poprzedniej odpowiedzi How to run only one task in ansible playbook?

Wreszcie, gdy gra się nie powiedzie, to zwykle daje coś w rodzaju:

PLAY RECAP ******************************************************************** 
      to retry, use: --limit @/home/user/site.retry 

Zastosowanie tej --limit polecenia i powinien ponowić z nieudanego zadania.

+4

Dzięki za listę opcji. ale AFAIK --limit zrzuca zarejestrowane zmienne i niestandardowe fakty, więc jest dobrze, o ograniczonym użyciu –

+9

Plik '.retry' zawiera tylko nieudane hosty, nie przechowuje gdzie dokładnie każdy host zawiódł. –

+1

@FlorianBrucker co za wstyd – igor

6

Przyszłe czytelników:

--limit @/home/user/site.retry nie pomoże w takim scenariuszu .retry przechowuje tylko uszkodzoną hosta i nic więcej, więc będzie po prostu wykonać wszystkie zadania przed nieudanych gospodarzy.

Jeśli używasz najnowszej wersji (Ansible 2.x), --start-at-task nie działa w przypadku zadań zdefiniowanych w roles.

Możesz osiągnąć podobny efekt, używając tylko flagi --step, np .: ansible-playbook playbook.yml --step. Krok pyta cię przed wykonaniem każdego zadania i możesz wybrać (N)o/(y)es/(c)ontinue.

Dzięki temu podejściu wybiórczo wykonujesz zadania w razie potrzeby, a także kontynuujesz od punktu, w którym się nie powiodło, po poprawkach.

Powiązane problemy