Harmonogramy
Uruchamianie formularza później lub według harmonogramu cron i zarządzanie wszystkimi harmonogramami
- Akcje formularza
- Planowanie formularza
- Strona Harmonogramy
- Wyrażenia cron i strefa czasowa
- Jak działa harmonogram
- Zaplanowane uruchomienia
- Gdy formularz się zmienia
- Zaplanowane zadania w historii zadań
Akcje formularza
Formularz może zrobić więcej niż natychmiastowe uruchomienie: lista rozwijana obok jego przycisku Wyślij zawiera trzy kolejne akcje.
| Akcja | Co robi | Opcja roli |
|---|---|---|
| Harmonogram (cykliczny) | Tworzy harmonogram, który uruchamia formularz według wyrażenia cron | allowScheduledJobs |
| Uruchom później (jednorazowo) | Tworzy harmonogram, który uruchamia formularz raz, w wybranym dniu i o wybranej godzinie | allowPlannedJobs |
| Zapisz | Zapisuje wartości pól, aby można je było później ponownie wczytać do formularza | allowStoredJobs |
Akcja, której opcja roli jest wyłączona, nie jest wyświetlana. Przed każdą z nich formularz jest walidowany, tak jak przy Wyślij. Obie akcje harmonogramu tworzą wpis na stronie Harmonogramy; Zapisz tworzy wpis na stronie Zapisane zadania. Pasek boczny strony Zadania otwiera je w sekcji Przyszłe jako Zaplanowane i Zapisane. Opcje ról opisano w Opcje ról.
Traktuj
allowScheduledJobsjako opcję na poziomie administratora. Jej harmonogramy nie należą do użytkownika, który je utworzył: każdy użytkownik z tą opcją widzi wszystkie harmonogramy i może je zmieniać. Taki harmonogram działa też z uprawnieniami administratora, dla dowolnego formularza, niezależnie od dostępu samego twórcy. Przyznawaj ją tylko rolom, którym zaufałbyś jak administratorom.
Uruchom później (jednorazowo) wymaga tylko
allowPlannedJobs. Dla użytkownika bezallowScheduledJobsplanuje uruchomienie jako ten użytkownik: serwer sprawdza, czy użytkownik może uruchomić formularz, a zadanie działa jako on i należy do niego, gdy nadejdzie jego czas (zobacz Zaplanowane uruchomienia).
Planowanie formularza
Wypełnij formularz, a następnie otwórz listę rozwijaną obok Wyślij i wybierz jedną z akcji harmonogramu.
- Harmonogram (cykliczny) otwiera Utwórz harmonogram: wpisz Nazwa i Wyrażenie cron (domyślne
0 0 * * *uruchamia codziennie o północy), a następnie wybierz Utwórz harmonogram. - Uruchom później (jednorazowo) otwiera Uruchom później: wpisz Nazwa i wybierz datę i godzinę Uruchom o, a następnie wybierz Zaplanuj zadanie.
Nazwa musi być unikalna wśród wszystkich harmonogramów. Harmonogram zachowuje nazwę formularza i kopię extravars, które formularz wygenerował w tym momencie, zapisaną jako YAML; każde uruchomienie używa tej kopii, więc edytuj ją na stronie Harmonogramy, aby zmienić to, co otrzymuje zadanie.

Strona Harmonogramy
Strona Harmonogramy wyświetla każdy harmonogram, od wersji 7.3.0 z kolumną Włączony, i wymaga allowScheduledJobs. Menu każdego wiersza oferuje:
| Akcja | Co robi |
|---|---|
| Edytuj | Zmienia nazwę, typ, wyrażenie cron lub czas uruchomienia, formularz i extra vars |
| Uruchom teraz | Uruchamia harmonogram teraz, bez czekania na jego wyrażenie cron lub czas uruchomienia |
| Włącz lub Wyłącz | Włącza lub wyłącza harmonogram, zależnie od tego, co pokazuje jego kolumna Włączony (od wersji 7.3.0) |
| Usuń | Usuwa harmonogram; od razu przestaje się uruchamiać |
| Ostatni wynik | Na stronie harmonogramu to, co zgłosiło ostatnie uruchomienie, np. numer uruchomionego zadania |
Harmonogram można też utworzyć tutaj od zera. Wybierz Formularz, a następnie zaznacz Jednorazowe uruchomienie i ustaw Uruchom o albo zostaw je niezaznaczone i ustaw Harmonogram cron. Extra vars to YAML bez formularza, który by go wypełnił, więc sam dodaj wartości potrzebne playbookowi, jako słownik (pary klucz: wartość).
Pole Harmonogram cron to edytor cron: opisuje wyrażenie słowami, oferuje gotowe ustawienia i pokazuje podgląd następnych uruchomień. Serwer odrzuca wyrażenie, którego nie potrafi wykonać, lub takie, które nigdy nie może wystąpić.
Od wersji 7.3.0 każdy harmonogram ma przełącznik Włączony, aby wstrzymać go bez usuwania. Wyłączony harmonogram pozostaje na stronie ze swoimi ustawieniami, ale nie uruchamia się sam: cykliczny pomija swoje takty cron, a jednorazowy czeka po swoim Uruchom o, aż zostanie ponownie włączony. Uruchom teraz nadal uruchamia go na żądanie. Nowy harmonogram jest włączony, a harmonogramy istniejące przed wersją 7.3.0 są włączone po aktualizacji.
Wyrażenia cron i strefa czasowa
Harmonogram cykliczny przyjmuje standardowe 5-polowe wyrażenie cron: minuta, godzina, dzień miesiąca, miesiąc i dzień tygodnia.
| Wyrażenie | Uruchamia się |
|---|---|
*/15 * * * * | Co 15 minut |
0 2 * * * | Codziennie o 02:00 |
30 7 * * 1-5 | Od poniedziałku do piątku o 07:30 |
0 0 1 * * | O północy pierwszego dnia każdego miesiąca |
Więcej przykładów i funkcje cron, których edytor nie akceptuje, znajdziesz w FAQ w Jakich wyrażeń cron mogę używać?.
Harmonogramy cron działają w strefie czasowej serwera, ustawianej przez
LOG_TZ(domyślnieUTC), a nie w strefie czasowej twojego profilu czy przeglądarki. Edytor cron pokazuje podgląd następnych uruchomień w tej samej strefie.
Jak działa harmonogram
Gdy nadchodzi termin harmonogramu, trafia on do kolejki, a serwer uruchamia harmonogramy z kolejki po jednym, sprawdzając kolejkę co 10 sekund.
- Harmonogramy cykliczne pomijają takt, gdy poprzednie uruchomienie wciąż jest w kolejce lub działa, więc uruchomienia nigdy się nie nakładają.
- Harmonogramy jednorazowe uruchamiają się w ciągu minuty od Uruchom o, a następnie są usuwane, także gdy zostały uruchomione przez Uruchom teraz.
- Stan ma wartość
success, gdy zadanie zostało uruchomione, ifailed, gdy nie dało się go uruchomić.successmówi tylko, że zadanie zostało uruchomione: otwórz zadanie, aby zobaczyć, jak się zakończyło.
Harmonogram utworzony z allowScheduledJobs działa jako wbudowany użytkownik Schedule Service (typ schedule) z rolą admin. Może uruchomić dowolny formularz, niezależnie od dostępu osoby, która utworzyła harmonogram, a ansibleforms_user w jego extravars opisuje tego użytkownika. Zaplanowane uruchomienie działa natomiast jako użytkownik, który je zaplanował.
Zadanie otrzymuje też obiekt schedule (z jego id, name i form), dzięki czemu playbook wie, że uruchomił go harmonogram:
schedule:
id: 3
name: Nightly cleanup
form: Cleanup servers
Zaplanowane uruchomienia
Uruchom później (jednorazowo) wybrane przez użytkownika bez allowScheduledJobs tworzy zaplanowane uruchomienie: jednorazowy harmonogram powiązany z tym użytkownikiem.
- Przy planowaniu serwer sprawdza, czy użytkownik może uruchomić formularz (jego
roles), a tryb verbose wymagaallowVerboseMode. Zaplanowane uruchomienie jest zawsze jednorazowe; wyrażenie cron jest odrzucane. - Przy weryfikacji uruchomienia
enforcewartości pól są sprawdzane podczas planowania, więc uruchomienie, które zostałoby odrzucone, jest odrzucane, gdy użytkownik wciąż na nie patrzy. - Gdy się uruchamia, zadanie działa jako ten użytkownik i należy do niego, przechodząc te same sprawdzenia co uruchomienie z przeglądarki: role formularza w ich ówczesnej postaci, usunięcie zastrzeżonych extravars i weryfikacja uruchomienia.
ansibleforms_useropisuje tego użytkownika.
Planujący nie widzi strony Harmonogramy, która wymaga allowScheduledJobs; zadanie pojawia się w jego własnej historii zadań.
Gdy formularz się zmienia
Harmonogram odwołuje się do formularza po nazwie i uruchamia go w postaci zdefiniowanej w chwili każdego uruchomienia.
- Formularz zostaje zmieniony: następne uruchomienie używa nowej definicji (playbook, szablon, inwentarz) z extravars zapisanymi w harmonogramie. Formularz nie jest renderowany, więc żadne pole nie jest przeliczane; dostosuj extra vars harmonogramu.
- Formularz zostaje przemianowany lub usunięty: uruchomienie kończy się błędem, Stan zmienia się na
failed, a Ostatni wynik brzmiFailed to launch : No such form '<name>'. Edytuj harmonogram i wybierz właściwy formularz albo go usuń.
Zaplanowane zadania w historii zadań
Każde uruchomienie harmonogramu tworzy zwykłe zadanie, wyświetlane na stronie Zadania z Schedule Service jako użytkownikiem lub, w przypadku zaplanowanego uruchomienia, z użytkownikiem, który je zaplanował.
Zadanie Schedule Service nie należy do osoby, która utworzyła harmonogram, więc widzą je tylko administratorzy i użytkownicy z showAllJobLogs; zadanie zaplanowanego uruchomienia widzi też jego użytkownik. Ostatni wynik harmonogramu wskazuje uruchomione zadanie, więc możesz je znaleźć na liście.