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:
-
launchdjest zasobem. -
nameto nazwa nadana blokowi zasobów. -
actionokreś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, iworking_directorysą 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\userlubuser@domain. 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ócz0. - blok jest wykonywany jako kod Ruby, który musi zwrócić
truelubfalse. Jeśli blok zwrócitrue, zostanie zastosowana właściwość guard.Jeśli blok zwrócifalse, 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