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
, iworking_directory
są właściwościami dostępnymi dla tego zasobu.
akcje
zasób launchd ma następujące akcje:
:create
domyślne. Utwórz listę właściwości launchd.:create_if_missing
Utwórz listę właściwości launchd, jeśli jeszcze nie istnieje.:delete
Usuń listę właściwości launchd. Spowoduje to rozładowanie demona lub agenta, jeśli zostanie załadowany.:disable
Wyłącz listę właściwości launchd.:enable
Utwó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.:nothing
ten 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.:restart
Uruchom 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_group
Ruby 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.
backup
Typ Ruby: Integer, false
liczba kopii zapasowych, które mają być przechowywane w /var/chef/backup
. Ustawfalse
, aby zapobiec przechowywaniu kopii zapasowych.
cookbook
Typ Ruby: String
nazwa książki kucharskiej, w której znajdują się pliki źródłowe.
group
Typ 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.
label
Typ Ruby: String
unikalny identyfikator dla zadania.
mode
Typ 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
.
owner
Typ 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\user
lubuser@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).
path
Typ Ruby: String
ścieżka do katalogu. Używanie w pełni kwalifikowanej ścieżki jest zalecane, ale nie zawsze jest wymagane. Wartość domyślna: name
bloku zasobów. Więcej informacji można znaleźć w sekcji” składnia ” powyżej.
plist_hash
Typ Ruby: Hash
Hash par wartości klucza używany do utworzenia listy właściwości launchd.
session_type
Typ Ruby: String
Typ pliku launchd, który ma zostać utworzony. Możliwe wartości: system
(domyślnie) lub user
.
source
Typ Ruby: String
ścieżka do listy właściwości launchd.
type
Typ Ruby: String
typ zasobu. Możliwe wartości: daemon
(domyślnie), agent
.
abandon_process_group
Typ 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.
debug
Typ Ruby: true, false
Ustawia maskę dziennika na LOG_DEBUG
dla tego zadania.
disabled
Typ Rubiego: true, false / Wartość domyślna:false
podpowiada do launchctl
, aby nie przesyłać tego zadania do launchd.
enable_globbing
Typ Ruby: true, false
zaktualizuj argumenty programu przed wywołaniem.
enable_transactions
Typ Ruby: true, false
śledź transakcje w toku; jeśli brak, Wyślij sygnał SIGKILL
.
environment_variables
Typ Ruby: Hash
dodatkowe zmienne środowiskowe do Ustawienia przed uruchomieniem zadania.
exit_timeout
Typ Ruby: Integer
ilość czasu (w sekundach) launchd czeka przed wysłaniem sygnału SIGKILL
.
hard_resource_limits
Typ Ruby: Hash
Hash limitów zasobów, które mają zostać nałożone na zadanie.
inetd_compatibility
Typ 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_groups
Ruby Type: true, false
określa, czy initgroups
jest wywoływana przed uruchomieniem zadania.
keep_alive
Typ 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_events
Ruby 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_once
Ruby 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_hosts
Typ 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_hosts
Typ Ruby: Array
tablica hostów, do której odnosi się ten plik konfiguracyjny.
limit_load_to_session_type
Typ Ruby: tablica, String
typy sesji, do których odnosi się ten plik konfiguracyjny.
low_priority_io
Ruby 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_services
Ruby Type: Hash
określa usługi, które mają być zarejestrowane w podsystemie bootstrap.
nice
Typ Ruby: Integer
wartość priorytetu planowania programu w zakresie -20
do 20
.
on_demand
Ruby 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_type
Ruby typ: String
przeznaczenie zadania: Adaptive
, Background
, Interactive
, lub Standard
.
program
Typ 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_arguments
Typ 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_directories
Typ Ruby: Array
tablica niepustych katalogów, które, jeśli zostaną zmodyfikowane, spowodują uruchomienie zadania.
root_directory
Ruby wpisz: String
chroot
do tego katalogu, a następnie uruchom zadanie.
run_at_load
Typ Ruby: true, false
Uruchom zadanie raz (w czasie ładowania).
sockets
Typ Ruby: Hash
Hash gniazd na żądanie, które informują launchd, kiedy zadanie powinno zostać uruchomione.
soft_resource_limits
Typ Ruby: Array
Hash limitów zasobów, które mają zostać nałożone na zadanie.
standard_error_path
Typ Ruby: String
plik, do którego wysyłany jest błąd standardowy (stderr
).
standard_in_path
Typ Ruby: String
plik, do którego wysyłane jest standardowe wejście (stdin
).
standard_out_path
Typ Ruby: String
plik, do którego wysyłane jest standardowe wyjście (stdout
).
start_calendar_interval
Typ 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_interval
Typ Ruby: Integer
częstotliwość (w sekundach), z jaką zadanie jest uruchamiane.
start_on_mount
Typ Ruby: true, false
uruchamianie zadania przy każdym zamontowaniu systemu plików.
throttle_interval
Typ 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.
umask
Typ Ruby: Integer
wartość dziesiętna do przekazania do umask
przed uruchomieniem zadania.
username
Typ Ruby: String
gdy launchd jest uruchamiany jako użytkownik root, użytkownik do uruchomienia zadania jako.
wait_for_debugger
Typ Ruby: true, false
określa, czy launchd ma zadanie czekać na dołączenie debugera przed wykonaniem kodu.
watch_paths
Typ Ruby: Array
tablica ścieżek, które, jeśli zostaną zmodyfikowane, spowodują uruchomienie zadania.
working_directory
Ruby 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ćtrue
oprócz0
. - blok jest wykonywany jako kod Ruby, który musi zwrócić
true
lubfalse
. 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