Diese Seite im Chef-Repository bearbeiten
Diese Seite wird aus der Chef Infra Client-Quelle generiert code.To schlagen Sie eine Änderung vor, bearbeiten Sie die Launchd.rb-Datei und senden Sie eine Pull-Anforderung an das Chef Infra-Client-Repository.
All Infra resources page
Verwenden Sie die launchd-Ressource, um systemweite Dienste (Daemons) und benutzerspezifische Dienste (Agents) auf der macOS-Plattform zu verwalten.
Neu im Chef Infra Client 12.8.
Syntax
Die vollständige Syntax für alle Eigenschaften, die für die launchd-Ressource verfügbar sind, lautet:
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
wo:
-
launchdist die Ressource. -
nameist der Name für den Ressourcenblock. -
actiongibt an, welche Schritte der Infra Client unternimmt, um den Knoten in den gewünschten Zustand zu bringen. -
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, undworking_directorysind die für diese Ressource verfügbaren Eigenschaften.
Aktionen
Die launchd-Ressource verfügt über die folgenden Aktionen:
:createStandard. Erstellen Sie eine Launchd-Eigenschaftsliste.:create_if_missingErstellen Sie eine Launchd-Eigenschaftsliste, falls diese noch nicht vorhanden ist.:deleteLöschen einer Launchd-Eigenschaftsliste. Dadurch wird ein Daemon oder Agent entladen, falls geladen.:disableDeaktivieren Sie eine Launchd-Eigenschaftsliste.:enableErstellen Sie eine Launchd-Eigenschaftsliste, und stellen Sie dann sicher, dass sie aktiviert ist. Wenn eine launchd-Eigenschaftsliste bereits vorhanden ist, aber nicht übereinstimmt, wird die Eigenschaftsliste entsprechend aktualisiert, und der Daemon oder Agent wird dann neu gestartet.:nothingDieser Ressourcenblock wird nicht ausgeführt, es sei denn, er wird von einer anderen Ressource benachrichtigt, um eine Aktion auszuführen. Nach der Benachrichtigung wird dieser Ressourcenblock entweder sofort ausgeführt oder in die Warteschlange gestellt, um am Ende eines Chef Infra-Client-Laufs ausgeführt zu werden.:restartStarten Sie einen von launchd verwalteten Daemon oder Agenten neu.
Eigenschaften
Die launchd-Ressource hat die folgenden Eigenschaften:
abandon_process_groupRuby Type: true, false
Wenn ein Job abbricht, werden möglicherweise alle verbleibenden Prozesse mit derselben Prozess-ID ausgeführt. Setzen Sie auf true, um alle verbleibenden Prozesse zu beenden.
backupRuby Type: Integer, false
Die Anzahl der Backups, die in /var/chef/backupgespeichert werden sollen. Setzen Sie auffalse, um zu verhindern, dass Backups gespeichert werden.
cookbookRubin Typ: String
Der Name des Kochbuchs, in dem sich die Quelldateien befinden.
groupRuby Type: String, Integer
Wenn launchd als Root-Benutzer ausgeführt wird, die Gruppe, als die der Job ausgeführt werden soll.Wenn die Eigenschaft username angegeben ist und diese Eigenschaft nicht, wird dieser Wert auf die Standardgruppe für den Benutzer festgelegt.
labelRuby Type: String
Die eindeutige Kennung für den Job.
modeRuby Type: Integer, String / Default Value:'0755'
Eine Zeichenfolge mit 3-5 Zeichen in Anführungszeichen, die den Oktalmodus definiert. Beispiel: '755', '0755' oder 00755.
ownerRubin Typ: Integer, String
Eine Zeichenfolge oder ID, die den Gruppenbesitzer anhand des Benutzernamens identifiziert, einschließlich vollqualifizierter Benutzernamen wie domain\user oderuser@domain. Wenn dieser Wert nicht angegeben wird, bleiben vorhandene Eigentümer unverändert, und neue Eigentümer verwenden den aktuellen Benutzer (falls erforderlich).
pathRuby Type: String
Der Pfad zum Verzeichnis. Die Verwendung eines vollständig qualifizierten Pfads istempfohlen, aber nicht immer erforderlich. Standardwert: der name des Ressourcenblocks. Weitere Informationen finden Sie im Abschnitt „Syntax“ oben.
plist_hashRubin Typ: Hash
Ein Hash von Schlüsselwertpaaren, die zum Erstellen der launchd-Eigenschaftsliste verwendet werden.
session_typeRuby Type: String
Der Typ der zu erstellenden Launchd-Liste. Mögliche Werte: system(Standard) oder user.
sourceRuby Type: String
Der Pfad zur Launchd-Eigenschaftsliste.
typeRuby Type: String
Der Typ der Ressource. Mögliche Werte: daemon (Standard), agent.
abandon_process_groupRuby Type: true, false
Wenn ein Job stirbt, werden möglicherweise alle verbleibenden Prozesse mit derselben Prozess-ID weiter ausgeführt. Setzen Sie auf true, um alle verbleibenden Prozesse zu beenden.
debugRubin Typ: true, false
Setzt die Protokollmaske für diesen Job auf LOG_DEBUG.
disabledRuby-Typ: true, false / Standardwert:false
Hinweise an launchctl, diesen Job nicht an launchd zu senden.
enable_globbingRuby Type: true, false
Programmargumente vor dem Aufruf aktualisieren.
enable_transactionsRuby Type: true, false
Laufende Transaktionen verfolgen; wenn keine, senden Sie das SIGKILL -Signal.
environment_variablesRuby Type: Hash
Zusätzliche Umgebungsvariablen, die vor dem Ausführen eines Jobs festgelegt werden müssen.
exit_timeoutRuby Type: Integer
Die Zeit (in Sekunden), die launchd wartet, bevor ein SIGKILL -Signal gesendet wird.
hard_resource_limitsRuby Type: Hash
Ein Hash von Ressourcenlimits, die einem Job auferlegt werden sollen.
inetd_compatibilityRuby Type: Hash
Gibt an, ob ein Daemon erwartet, so ausgeführt zu werden, als wäre er voninetd gestartet worden. Setzen Sie auf wait => true, um Standardeingabe-, Ausgabe- und Fehlerdateideskriptoren zu übergeben. Setzen Sie auf wait => false, um den Systemaufruf accept im Auftrag des Auftrags aufzurufen, und übergeben Sie dann Standardeingabe-, Ausgabe- und Fehlerdateideskriptoren.
init_groupsRuby Type: true, false
Geben Sie an, ob initgroups aufgerufen wird, bevor ein Job ausgeführt wird.
keep_aliveRubin Typ: true, false, Hash
Halten Sie einen Job kontinuierlich laufen (true) oder lassen Sie Nachfrage und Bedingungen auf dem Knoten bestimmen, ob der Job weiterläuft (false).
Neu in Chef Client 12.14
launch_eventsRuby Type: Hash
Geben Sie übergeordnete Ereignistypen an, die als Ereignisquellen für den Start bei Bedarf verwendet werden sollen.
Neu in Chef Infra Client 15.1
launch_only_onceRuby Type: true, false
Geben Sie an, ob ein Job nur einmal ausgeführt werden kann. Setzen Sie diesen Wert auf true, wenn ein Job nicht ohne vollständigen Neustart der Maschine neu gestartet werden kann.
limit_load_from_hostsRubin Typ: Array
Ein Array von Hosts, auf die diese Konfigurationsdatei nicht zutrifft, d. h. „Wenden Sie diese Konfigurationsdatei auf alle Hosts an, die nicht in diesem Array angegeben sind“.
limit_load_to_hostsRuby Type: Array
Ein Array von Hosts, für die diese Konfigurationsdatei gilt.
limit_load_to_session_typeRuby Type: Array, String
Der/die Sitzungstyp(e), für den/die diese Konfigurationsdatei gilt/gelten.
low_priority_ioRuby Type: true, false
Geben Sie an, ob der Kernel auf dem Knoten diesen Daemon während der Dateisystem-E / A als mit niedriger Priorität betrachten soll.
mach_servicesRuby Type: Hash
Geben Sie Dienste an, die beim Bootstrap-Subsystem registriert werden sollen.
niceRuby Type: Integer
Der Programmplanungsprioritätswert im Bereich -20 bis 20.
on_demandRuby Type: true, false
Halten Sie einen Job am Leben. Gilt nur für macOS Version 10.4 (und früher);verwenden Sie stattdessen keep_alive für neuere Versionen.
process_typeRuby Type: String
Der beabsichtigte Zweck des Jobs: Adaptive, Background, Interactive, oder Standard.
programRuby Type: String
Das erste Argument von execvp, typischerweise der Dateiname, der der auszuführenden Datei zugeordnet ist. Dieser Wert muss angegeben werden, wennprogram_arguments nicht angegeben ist, und umgekehrt.
program_argumentsRubin Typ: Array
Das zweite Argument von execvp. Wenn program nicht angegeben ist, muss thisproperty angegeben werden und wird so behandelt, als wäre es das erste Argument.
queue_directoriesRuby Type: Array
Ein Array von nicht leeren Verzeichnissen, die, wenn sie geändert werden, dazu führen, dass ein Job gestartet wird.
root_directoryRuby Type: String
chroot in dieses Verzeichnis und führen Sie den Job aus.
run_at_loadRuby Type: true, false
Starten Sie einen Job einmal (zum Zeitpunkt des Ladens).
socketsRuby Type: Hash
Ein Hash von On-Demand-Sockets, die launchd benachrichtigen, wenn ein Job ausgeführt werden soll.
soft_resource_limitsRubin Typ: Array
Ein Hash von Ressourcenlimits, die einem Job auferlegt werden sollen.
standard_error_pathRuby Type: String
Die Datei, an die der Standardfehler (stderr) gesendet wird.
standard_in_pathRuby Type: String
Die Datei, an die die Standardeingabe (stdin) gesendet wird.
standard_out_pathRuby Type: String
Die Datei, an die die Standardausgabe (stdout) gesendet wird.
start_calendar_intervalRuby Type: Hash
Ein Hash (ähnlich crontab), der die Kalenderhäufigkeit definiert, mit der ein Job gestartet wird. Beispiel: { Minute => "0", Hour => "20", Day => "*", Weekday => "1-5", Month => "*" } führt jeden Tag von Montag bis Freitag jeden Monat einen Job um 8:00 Uhr aus.
start_intervalRubin Typ: Integer
Die Häufigkeit (in Sekunden), mit der ein Job gestartet wird.
start_on_mountRuby Type: true, false
Startet jedes Mal einen Job, wenn ein Dateisystem eingehängt wird.
throttle_intervalRuby Type: Integer / Default Value:10
Die Häufigkeit (in Sekunden), mit der Jobs erzeugt werden dürfen.
time_outRuby Type: Integer
Die Zeit (in Sekunden), die ein Job vor dem Timeout inaktiv sein kann. Wenn kein Wert angegeben ist, wird der Standard-Timeout-Wert für launchd verwendet.
umaskRuby Type: Integer
Ein Dezimalwert, der an umask übergeben werden soll, bevor ein Job ausgeführt wird.
usernameRubin Typ: String
Wenn launchd als Root-Benutzer ausgeführt wird, der Benutzer, als der der Job ausgeführt werden soll.
wait_for_debuggerRuby Type: true, false
Geben Sie an, ob launchd einen Job hat Warten Sie, bis ein Debugger angehängt wird, bevor Sie Code ausführen.
watch_pathsRuby Type: Array
Ein Array von Pfaden, die, wenn sie geändert werden, dazu führen, dass ein Job gestartet wird.
working_directoryRuby Type: String
chdir in dieses Verzeichnis und führen Sie den Job aus.
Allgemeine Ressourcenfunktionalität
Chef-Ressourcen umfassen allgemeine Eigenschaften, Benachrichtigungen und Ressourcenwächter.
Allgemeine Eigenschaften
Die folgenden Eigenschaften sind allen Ressourcen gemeinsam:
compile_time
Ruby-Typ: wahr, falsch / Standardwert: false
Steuern Sie die Phase, in der die Ressource auf dem Knoten ausgeführt wird. Auf true gesetzt, um ausgeführt zu werden, während die Ressourcensammlung erstellt wird (compile phase). Wird auf false gesetzt, um ausgeführt zu werden, während der Infra-Client den Knoten konfiguriert (converge phase).
ignore_failure
Ruby-Typ: wahr, falsch, :quiet / Default-Wert: false
Führen Sie ein Rezept weiter aus, wenn eine Ressource aus irgendeinem Grund fehlschlägt. :quiet zeigt nicht den vollständigen Stack-Trace an und das Rezept wird weiterhin ausgeführt, wenn eine Ressource ausfällt.
retries
Ruby-Typ: Ganzzahl / Standardwert: 0
Die Anzahl der Versuche, Ausnahmen abzufangen und die Ressource erneut zu versuchen.
retry_delay
Ruby-Typ: Ganzzahl / Standardwert: 2
Die Wiederholungsverzögerung (in Sekunden).
sensitive
Ruby-Typ: wahr, falsch | Standardwert: false
Stellen Sie sicher, dass sensible Ressourcendaten nicht von Chef InfraClient protokolliert werden.
notifies
Ruby-Typ: Symbol, ‚Chef::Ressource‘
Eine Ressource kann eine andere Ressource benachrichtigen, um Maßnahmen zu ergreifen, wenn sich ihr Status ändert. Geben Sie eine 'resource' , die :action , die resourceshould , und dann die :timer für diese Aktion an. Verwenden Sie eine notifies -Anweisung, damit jede Ressource benachrichtigt wird.
Wenn die referenzierte Ressource nicht existiert, wird ein Fehler raised.In im Gegensatz dazu schlägt subscribes nicht fehl, wenn die sourceresource nicht gefunden wird.
Ein Timer gibt den Punkt während eines Chef Infra Client-Laufs an, an dem die Anotifizierung ausgeführt wird. Folgende Timer stehen zur Verfügung:
:before
Gibt an, dass die Aktion für eine gemeldete Ressource ausgeführt werden soll, bevor der Ressourcenblock verarbeitet wird, in dem sich die Benachrichtigung befindet.
:delayed
Standard. Gibt an, dass eine Benachrichtigung in die Warteschlange gestellt und dann am Ende eines Chef Infra-Clientlaufs ausgeführt werden soll.
:immediate,:immediately
Gibt an, dass eine Benachrichtigung sofort perresource notified ausgeführt werden soll.
Die Syntax für notifies lautet:
notifies :action, 'resource', :timer
subscribes
Rubin Typ: Symbol, ‚Chef::Resource‘
Eine Ressource kann eine andere Ressource abhören und dann Maßnahmen ergreifen, wenn sich der Status der Ressource, die abgehört wird, ändert. Geben Sie eine'resource', die :action genommen werden, und dann die :timer forthat Aktion.
Beachten Sie, dass subscribes die angegebene Aktion nicht auf die Quelle anwendet, auf die es hört – zum Beispiel:
file '/etc/nginx/ssl/example.crt' do mode '0600' owner 'root'endservice 'nginx' do subscribes :reload, 'file', :immediatelyend
In diesem Fall lädt die Eigenschaft subscribes den Dienst nginx neu, wenn die Zertifikatsdatei unter/etc/nginx/ssl/example.crt aktualisiert wird. subscribes nimmt keine Änderungen an der Zertifikatsdatei selbst vor, sondern wartet lediglich auf eine Änderung der Datei und führt die :reload -Aktion für seine Ressource aus (in diesem Beispiel nginx), wenn eine Änderung erkannt wird.
Wenn die andere Ressource nicht vorhanden ist, löst das Abonnement keinen Fehler aus. Vergleichen Sie dies mit der strengeren Semantik von notifies , die einen Fehler auslöst, wenn die andere Ressource nicht existiert.
Ein Timer gibt den Punkt während eines Chef Infra Client-Laufs an, an dem die Anotifizierung ausgeführt wird. Folgende Timer stehen zur Verfügung:
:before
Gibt an, dass die Aktion für eine gemeldete Ressource ausgeführt werden soll, bevor der Ressourcenblock verarbeitet wird, in dem sich die Benachrichtigung befindet.
:delayed
Standard. Gibt an, dass eine Benachrichtigung in die Warteschlange gestellt und dann am Ende eines Chef Infra-Clientlaufs ausgeführt werden soll.
:immediate,:immediately
Gibt an, dass eine Benachrichtigung sofort perresource notified ausgeführt werden soll.
Die Syntax für subscribes lautet:
subscribes :action, 'resource', :timer
Guards
Eine Guard-Eigenschaft kann verwendet werden, um den Zustand eines Knotens während der Ausführungsphase eines Chef Infra-Client-Laufs zu bewerten. Basierend auf den Ergebnissen dieser Bewertung wird dann eine Guard-Eigenschaft verwendet, um dem Infra-Client mitzuteilen, ob er eine Ressource weiter ausführen soll. Eine Guard-Eigenschaft akzeptiert entweder einen String-Wert oder einen Ruby-Blockwert:
- Ein String wird als Shell-Befehl ausgeführt. Wenn der Befehl
0zurückgibt, wird der Schutz angewendet. Wenn der Befehl einen anderen Wert zurückgibt, dannDie Guard-Eigenschaft wird nicht angewendet. String-Guards in apowershell_script führen Windows PowerShell-Befehle aus und können zusätzlich zu0truezurückgeben. - Ein Block wird als Ruby-Code ausgeführt, der entweder
trueoderfalsezurückgeben muss. Wenn der Blocktruezurückgibt, wird die Guard-Eigenschaft angewendet.Wenn der Blockfalsezurückgibt, wird die Guard-Eigenschaft nicht angewendet.
Eine Guard-Eigenschaft ist nützlich, um sicherzustellen, dass eine Ressource idempotent ist, indem sie dieser Ressource erlaubt, auf den gewünschten Zustand zu testen, während sie ausgeführt wird.
Eigenschaften
Die folgenden Eigenschaften können verwendet werden, um einen Guard zu definieren, der während der Ausführungsphase eines Chef Infra-Clientlaufs evaluiert wird:
not_if
Verhindert die Ausführung einer Ressource, wenn die Bedingung true zurückgibt.
only_if
Zulassen, dass eine Ressource nur ausgeführt wird, wenn die Bedingung true zurückgibt.
Beispiele
Die folgenden Beispiele veranschaulichen verschiedene Ansätze für die Verwendung der launchd-Ressource in Rezepten:
Erstellen eines Startdämons aus einer Kochbuchdatei