launchd Resource

Edytuj tę stronę w repozytorium Chef

ta strona została wygenerowana ze źródła klienta Chef Infra code.To zaproponuj zmianę, edytuj launchd.plik rb i przesłać żądanie pull do repozytorium klienta Chef Infra.

Strona wszystkich zasobów Infra

użyj zasobu launchd do zarządzania usługami ogólnosystemowymi (demonami) i usługami dla poszczególnych użytkowników (agentami) na platformie macOS.

nowość w programie Chef Infra Client 12.8.

składnia

pełna składnia dla wszystkich właściwości dostępnych dla zasobu launchd to:

launchd 'name' do abandon_process_group true, false backup Integer, false cookbook String debug true, false disabled true, false # default value: false enable_globbing true, false enable_transactions true, false environment_variables Hash exit_timeout Integer group String, Integer hard_resource_limits Hash inetd_compatibility Hash init_groups true, false keep_alive true, false, Hash label String # default value: 'name' unless specified launch_events Hash launch_only_once true, false ld_group String limit_load_from_hosts Array limit_load_to_hosts Array limit_load_to_session_type Array, String low_priority_io true, false mach_services Hash mode String, Integer nice Integer on_demand true, false owner String, Integer path String plist_hash Hash process_type String program String program_arguments Array queue_directories Array root_directory String run_at_load true, false session_type String sockets Hash soft_resource_limits Array source String standard_error_path String standard_in_path String standard_out_path String start_calendar_interval Hash, Array start_interval Integer start_on_mount true, false throttle_interval Integer time_out Integer type String # default value: "daemon" umask Integer username String wait_for_debugger true, false watch_paths Array working_directory String action Symbol # defaults to :create if not specifiedend

gdzie:

  • launchd jest zasobem.
  • name to nazwa nadana blokowi zasobów.
  • action określa, jakie kroki podejmie Klient INFRA, aby doprowadzić węzeł do pożądanego stanu.
  • abandon_process_group, backup, cookbook, debug, disabled, enable_globbing, enable_transactions, environment_variables, exit_timeout, group, hard_resource_limits, inetd_compatibility, init_groups, keep_alive, label, launch_events, launch_only_once, ld_group, limit_load_from_hosts, limit_load_to_hosts, limit_load_to_session_type, low_priority_io, mach_services, mode, nice, on_demand, owner, path, plist_hash, process_type, program, program_arguments, queue_directories, root_directory, run_at_load, session_type, sockets, soft_resource_limits, source, standard_error_path, standard_in_path, standard_out_path, start_calendar_interval, start_interval, start_on_mount, throttle_interval, time_out, type, umask, username, wait_for_debugger, watch_paths, i working_directory są właściwościami dostępnymi dla tego zasobu.

akcje

zasób launchd ma następujące akcje:

:createdomyślne. Utwórz listę właściwości launchd.:create_if_missingUtwórz listę właściwości launchd, jeśli jeszcze nie istnieje.:deleteUsuń listę właściwości launchd. Spowoduje to rozładowanie demona lub agenta, jeśli zostanie załadowany.:disableWyłącz listę właściwości launchd.:enableUtwórz listę właściwości launchd, a następnie upewnij się, że jest włączona. Jeśli lista właściwości launchd już istnieje, ale nie pasuje, zaktualizuje listę właściwości, aby pasowała, a następnie ponownie uruchomi demona lub agenta.:nothingten blok zasobów nie działa, chyba że zostanie powiadomiony przez inną akcję resource totake. Po powiadomieniu ten blok zasobów uruchamia się natychmiast lub jest kolejkowany do uruchomienia na końcu uruchomienia klienta Chef Infra.:restartUruchom ponownie demona lub agenta zarządzanego przez launchd.

właściwości

zasób launchd ma następujące właściwości:

abandon_process_groupRuby Type: true, false

jeśli zadanie umrze, wszystkie pozostałe procesy o tym samym ID procesu mogą nadal działać. Ustaw na true, aby zabić wszystkie pozostałe procesy.

backupTyp Ruby: Integer, false

liczba kopii zapasowych, które mają być przechowywane w /var/chef/backup. Ustawfalse, aby zapobiec przechowywaniu kopii zapasowych.

cookbookTyp Ruby: String

nazwa książki kucharskiej, w której znajdują się pliki źródłowe.

groupTyp Ruby: String, Integer

gdy launchd jest uruchamiany jako użytkownik root, grupa do uruchomienia zadania jako.Jeśli właściwość username jest określona, a właściwość ta nie jest, wartość ta jest ustawiana na domyślną grupę dla użytkownika.

labelTyp Ruby: String

unikalny identyfikator dla zadania.

modeTyp Ruby: Integer, String | wartość domyślna:'0755'

cytowany 3-5 znakowy łańcuch, który definiuje tryb ósemkowy. Na przykład: '755', '0755'lub 00755.

ownerTyp Ruby: Integer, String

ciąg znaków lub ID,które identyfikuje właściciela grupy po nazwie użytkownika, w tym w pełni kwalifikowane nazwy użytkowników, takie jak domain\userlub[email protected]. Jeśli ta wartość nie jest określona, istniejące właściciele pozostają niezmienione, a nowe przypisania właścicieli używają bieżącego użytkownika (jeśli jest to konieczne).

pathTyp Ruby: String

ścieżka do katalogu. Używanie w pełni kwalifikowanej ścieżki jest zalecane, ale nie zawsze jest wymagane. Wartość domyślna: namebloku zasobów. Więcej informacji można znaleźć w sekcji” składnia ” powyżej.

plist_hashTyp Ruby: Hash

Hash par wartości klucza używany do utworzenia listy właściwości launchd.

session_typeTyp Ruby: String

Typ pliku launchd, który ma zostać utworzony. Możliwe wartości: system(domyślnie) lub user.

sourceTyp Ruby: String

ścieżka do listy właściwości launchd.

typeTyp Ruby: String

typ zasobu. Możliwe wartości: daemon (domyślnie), agent.

abandon_process_groupTyp Ruby: true, false

jeśli zadanie umrze, wszystkie pozostałe procesy o tym samym ID procesu mogą nadal działać. Ustaw na true, aby zabić wszystkie pozostałe procesy.

debugTyp Ruby: true, false

Ustawia maskę dziennika na LOG_DEBUG dla tego zadania.

disabledTyp Rubiego: true, false / Wartość domyślna:false

podpowiada do launchctl, aby nie przesyłać tego zadania do launchd.

enable_globbingTyp Ruby: true, false

zaktualizuj argumenty programu przed wywołaniem.

enable_transactionsTyp Ruby: true, false

śledź transakcje w toku; jeśli brak, Wyślij sygnał SIGKILL.

environment_variablesTyp Ruby: Hash

dodatkowe zmienne środowiskowe do Ustawienia przed uruchomieniem zadania.

exit_timeoutTyp Ruby: Integer

ilość czasu (w sekundach) launchd czeka przed wysłaniem sygnału SIGKILL.

hard_resource_limitsTyp Ruby: Hash

Hash limitów zasobów, które mają zostać nałożone na zadanie.

inetd_compatibilityTyp Ruby: Hash

określa, czy demon ma być uruchomiony tak, jakby został uruchomiony zinetd. Ustaw na wait => true, aby przekazać standardowe deskryptory plików wejściowych, wyjściowych i błędów. Ustaw na wait => false, aby wywołać wywołanie systemowe accept w imieniu zadania, a następnie przekazać standardowe deskryptory plików wejściowych,wyjściowych i błędów.

init_groupsRuby Type: true, false

określa, czy initgroups jest wywoływana przed uruchomieniem zadania.

keep_aliveTyp Ruby: true, false,Hash

utrzymuj ciągłe działanie zadania (true) lub Zezwalaj na żądanie i warunki na węźle, aby określić, czy zadanie nadal działa (false).

nowość w kliencie Chef 12.14

launch_eventsRuby Type: Hash

określa typy zdarzeń wyższego poziomu, które mają być używane jako źródła zdarzeń uruchamiania na żądanie.

New in Chef Infra Client 15.1

launch_only_onceRuby Type: true, false

Określ, czy zadanie może być uruchomione tylko raz. Ustaw tę wartość na true, jeśli zadanie nie może zostać ponownie uruchomione bez pełnego ponownego uruchomienia komputera.

limit_load_from_hostsTyp Ruby: Array

tablica hostów,do których ten plik konfiguracyjny nie ma zastosowania, tzn. „zastosuj ten plik konfiguracyjny do wszystkich hostów nie podanych w tej tablicy”.

limit_load_to_hostsTyp Ruby: Array

tablica hostów, do której odnosi się ten plik konfiguracyjny.

limit_load_to_session_typeTyp Ruby: tablica, String

typy sesji, do których odnosi się ten plik konfiguracyjny.

low_priority_ioRuby Type: true, false

określa, czy jądro w węźle powinno uważać tego demona za niskiego priorytetu podczas We/Wy systemu plików.

mach_servicesRuby Type: Hash

określa usługi, które mają być zarejestrowane w podsystemie bootstrap.

niceTyp Ruby: Integer

wartość priorytetu planowania programu w zakresie -20 do 20.

on_demandRuby Type: true, false

Keep a job alive. Dotyczy tylko systemu macOS w wersji 10.4(i wcześniejszych); użyj keep_alive zamiast nowszych wersji.

process_typeRuby typ: String

przeznaczenie zadania: Adaptive, Background, Interactive, lub Standard.

programTyp Ruby: String

pierwszy argument execvp, zazwyczaj nazwa pliku powiązana z plikiem do wykonania. Wartość ta musi być określona, jeśliprogram_arguments nie jest określona i odwrotnie.

program_argumentsTyp Ruby: Tablica

drugi argument execvp. Jeśli program nie jest podany, to należy podać ten parametr i będzie obsługiwany tak, jakby był pierwszym argumentem.

queue_directoriesTyp Ruby: Array

tablica niepustych katalogów, które, jeśli zostaną zmodyfikowane, spowodują uruchomienie zadania.

root_directoryRuby wpisz: String

chroot do tego katalogu, a następnie uruchom zadanie.

run_at_loadTyp Ruby: true, false

Uruchom zadanie raz (w czasie ładowania).

socketsTyp Ruby: Hash

Hash gniazd na żądanie, które informują launchd, kiedy zadanie powinno zostać uruchomione.

soft_resource_limitsTyp Ruby: Array

Hash limitów zasobów, które mają zostać nałożone na zadanie.

standard_error_pathTyp Ruby: String

plik, do którego wysyłany jest błąd standardowy (stderr).

standard_in_pathTyp Ruby: String

plik, do którego wysyłane jest standardowe wejście (stdin).

standard_out_pathTyp Ruby: String

plik, do którego wysyłane jest standardowe wyjście (stdout).

start_calendar_intervalTyp Ruby: Hash

Hash (podobny do crontab), który definiuje częstotliwość kalendarza podczas uruchamiania zadania. Na przykład:{ Minute => "0", Hour => "20", Day => "*", Weekday => "1-5", Month => "*" } będzie działać codziennie o 20:00, Od Poniedziałku do piątku, każdego miesiąca w roku.

start_intervalTyp Ruby: Integer

częstotliwość (w sekundach), z jaką zadanie jest uruchamiane.

start_on_mountTyp Ruby: true, false

uruchamianie zadania przy każdym zamontowaniu systemu plików.

throttle_intervalTyp Rubiego: liczba całkowita / wartość domyślna:10

częstotliwość (w sekundach), przy której zadania mogą się pojawiać.

time_out

Typ Ruby: Integer

ilość czasu (w sekundach) zadanie może być bezczynne przed jego upływem. Jeśli nie podano żadnej wartości, zostanie użyta domyślna wartość timeout dla launchdw.

umaskTyp Ruby: Integer

wartość dziesiętna do przekazania do umask przed uruchomieniem zadania.

usernameTyp Ruby: String

gdy launchd jest uruchamiany jako użytkownik root, użytkownik do uruchomienia zadania jako.

wait_for_debuggerTyp Ruby: true, false

określa, czy launchd ma zadanie czekać na dołączenie debugera przed wykonaniem kodu.

watch_pathsTyp Ruby: Array

tablica ścieżek, które, jeśli zostaną zmodyfikowane, spowodują uruchomienie zadania.

working_directoryRuby wpisz: String

chdir do tego katalogu, a następnie uruchom zadanie.

wspólna funkcjonalność zasobów

zasoby szefa kuchni obejmują wspólne właściwości, powiadomienia i osłony zasobów.

wspólne właściwości

następujące właściwości są wspólne dla każdego Zasobu:

compile_time

Typ Ruby: true, false / Wartość domyślna: false

Kontroluj fazę, podczas której zasób jest uruchamiany na węźle. Ustaw na true, aby działał podczas budowania kolekcji zasobów (compile phase). Ustaw na false, aby uruchomić podczas gdy Chef Infra klient konfiguruje węzeł (converge phase).

ignore_failure

Ruby Type: true, false,: quiet / Default Value: false

Kontynuuj uruchamianie przepisu, jeśli zasób nie powiedzie się z jakiegokolwiek powodu. :quiet nie wyświetli pełnego śladu stosu, a przepis będzie nadal działał, jeśli zasób zawiedzie.

retries

Typ Ruby: liczba całkowita / wartość domyślna: 0

liczba prób przechwycenia wyjątków i ponownej próby zasobu.

retry_delay

Typ Ruby: liczba całkowita / wartość domyślna: 2

opóźnienie ponownej próby (w sekundach).

sensitive

Typ Ruby: true, false / Wartość domyślna: false

upewnij się, że poufne dane zasobów nie są rejestrowane przez Chef InfraClient.

notifies

Rubin Typ: Symbol, ’ Kucharz::Zasób ”

zasób może powiadomić inny zasób o podjęciu działania, gdy jego stan się zmienia. Określ 'resource', :action, które zasoby powinny podjąć, a następnie :timer dla tej akcji. Zasób może identyfikować więcej niż jeden zasób; użyj notifies oświadczenie dla każdego źródła do powiadomienia.

jeśli odwołujący się zasób nie istnieje, błąd jest raised.In kontrast, subscribes nie zawiedzie, jeśli źródło nie zostanie znalezione.

czasomierz określa punkt podczas uruchamiania klienta Chef Infra, w którym jest uruchamiany anotification. Dostępne są następujące timery:

:before

Określa, że działanie na zgłoszonym zasobie powinno być uruchamiane przed przetworzeniem bloku zasobów, w którym znajduje się powiadomienie.

:delayed

domyślnie. Określa, że powiadomienie powinno być ustawione w kolejce, a następnie executed na końcu uruchomienia klienta Chef Infra.

:immediate,:immediately

Określa, że powiadomienie powinno zostać uruchomione natychmiast, perresource notified.

składnia dla notifies jest:

notifies :action, 'resource', :timer

subscribes

Rodzaj rubinu: Symbol, ’ kucharz::Resource ”

zasób może nasłuchiwać innego zasobu, a następnie podjąć działania, jeśli zmieni się stan odsłuchiwanego zasobu. Określ'resource', :action, które mają zostać podjęte, a następnie :timer dla tej akcji.

zauważ, że subscribes nie stosuje określonej akcji do źródła, którego słucha – na przykład:

file '/etc/nginx/ssl/example.crt' do mode '0600' owner 'root'endservice 'nginx' do subscribes :reload, 'file', :immediatelyend

w tym przypadku właściwość subscribes przeładowuje usługę nginx, jednak jej plik certyfikatu, znajdujący się pod/etc/nginx/ssl/example.crt, jest aktualizowany. subscribes nie dokonuje żadnych zmian w samym pliku certyfikatu, tylko nasłuchuje zmiany w pliku i wykonuje akcję :reload dla jego zasobu (w tym przykładzie nginx) po wykryciu zmiany.

jeśli inny zasób nie istnieje, subskrypcja nie spowoduje błędu. Kontrastuj to z surowszą semantyką notifies, co spowoduje błąd, jeśli inny zasób nie istnieje.

czasomierz określa punkt podczas uruchamiania klienta Chef Infra, w którym jest uruchamiany anotification. Dostępne są następujące timery:

:before

Określa, że działanie na zgłoszonym zasobie powinno być uruchamiane przed przetworzeniem bloku zasobów, w którym znajduje się powiadomienie.

:delayed

domyślnie. Określa, że powiadomienie powinno być ustawione w kolejce, a następnie executed na końcu uruchomienia klienta Chef Infra.

:immediate,:immediately

Określa, że powiadomienie powinno zostać uruchomione natychmiast, perresource notified.

składnia dla subscribes jest:

subscribes :action, 'resource', :timer

Guards

właściwość guard może być użyta do oceny stanu węzła podczas fazy detekcji klienta Chef Infra. Na podstawie wyników tej wyceny, właściwość guard jest następnie używana do poinformowania Klienta Chef Infra, czy powinien kontynuować wykonywanie zasobu. Właściwość guard akceptuje wartość ciągu eithera lub wartość bloku Ruby:

  • łańcuch jest wykonywany jako polecenie powłoki. Jeśli polecenie zwróci 0, zostanie zastosowana Ochrona. Jeżeli polecenie zwróci inną wartość, wtedy właściwość guard nie zostanie zastosowana. Strażnicy łańcuchów w apowershell_script uruchamiają polecenia Windows PowerShell i mogą zwracać trueoprócz 0.
  • blok jest wykonywany jako kod Ruby, który musi zwrócić true lubfalse. Jeśli blok zwróci true, zostanie zastosowana właściwość guard.Jeśli blok zwróci false, właściwość guard nie zostanie zastosowana.

właściwość strażnika jest przydatna do zapewnienia, że zasób jest idempotentny, poprzez umożliwienie mu przetestowania pożądanego stanu, ponieważ jest on executed, a następnie, jeśli pożądany stan jest obecny, aby Chef InfraClient nic nie robił.

właściwości

następujące właściwości mogą być użyte do zdefiniowania strażnika, który jest oceniany podczas fazy wykonywania polecenia Chef Infra Client:

not_if

uniemożliwia wykonywanie zasobu, gdy warunek zwraca true.

only_if

Zezwalaj na uruchomienie zasobu tylko wtedy, gdy warunek zwraca true.

przykłady

poniższe przykłady pokazują różne podejścia do korzystania z zasobu launchd w recepturach:

Utwórz demona startowego z pliku książki kucharskiej



+