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:
-
launchd
ist die Ressource. -
name
ist der Name für den Ressourcenblock. -
action
gibt 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_directory
sind die für diese Ressource verfügbaren Eigenschaften.
Aktionen
Die launchd-Ressource verfügt über die folgenden Aktionen:
:create
Standard. Erstellen Sie eine Launchd-Eigenschaftsliste.:create_if_missing
Erstellen Sie eine Launchd-Eigenschaftsliste, falls diese noch nicht vorhanden ist.:delete
Löschen einer Launchd-Eigenschaftsliste. Dadurch wird ein Daemon oder Agent entladen, falls geladen.:disable
Deaktivieren Sie eine Launchd-Eigenschaftsliste.:enable
Erstellen 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.:nothing
Dieser 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.:restart
Starten Sie einen von launchd verwalteten Daemon oder Agenten neu.
Eigenschaften
Die launchd-Ressource hat die folgenden Eigenschaften:
abandon_process_group
Ruby 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.
backup
Ruby Type: Integer, false
Die Anzahl der Backups, die in /var/chef/backup
gespeichert werden sollen. Setzen Sie auffalse
, um zu verhindern, dass Backups gespeichert werden.
cookbook
Rubin Typ: String
Der Name des Kochbuchs, in dem sich die Quelldateien befinden.
group
Ruby 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.
label
Ruby Type: String
Die eindeutige Kennung für den Job.
mode
Ruby Type: Integer, String / Default Value:'0755'
Eine Zeichenfolge mit 3-5 Zeichen in Anführungszeichen, die den Oktalmodus definiert. Beispiel: '755'
, '0755'
oder 00755
.
owner
Rubin 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).
path
Ruby 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_hash
Rubin Typ: Hash
Ein Hash von Schlüsselwertpaaren, die zum Erstellen der launchd-Eigenschaftsliste verwendet werden.
session_type
Ruby Type: String
Der Typ der zu erstellenden Launchd-Liste. Mögliche Werte: system
(Standard) oder user
.
source
Ruby Type: String
Der Pfad zur Launchd-Eigenschaftsliste.
type
Ruby Type: String
Der Typ der Ressource. Mögliche Werte: daemon
(Standard), agent
.
abandon_process_group
Ruby 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.
debug
Rubin Typ: true, false
Setzt die Protokollmaske für diesen Job auf LOG_DEBUG
.
disabled
Ruby-Typ: true, false / Standardwert:false
Hinweise an launchctl
, diesen Job nicht an launchd zu senden.
enable_globbing
Ruby Type: true, false
Programmargumente vor dem Aufruf aktualisieren.
enable_transactions
Ruby Type: true, false
Laufende Transaktionen verfolgen; wenn keine, senden Sie das SIGKILL
-Signal.
environment_variables
Ruby Type: Hash
Zusätzliche Umgebungsvariablen, die vor dem Ausführen eines Jobs festgelegt werden müssen.
exit_timeout
Ruby Type: Integer
Die Zeit (in Sekunden), die launchd wartet, bevor ein SIGKILL
-Signal gesendet wird.
hard_resource_limits
Ruby Type: Hash
Ein Hash von Ressourcenlimits, die einem Job auferlegt werden sollen.
inetd_compatibility
Ruby 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_groups
Ruby Type: true, false
Geben Sie an, ob initgroups
aufgerufen wird, bevor ein Job ausgeführt wird.
keep_alive
Rubin 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_events
Ruby 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_once
Ruby 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_hosts
Rubin 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_hosts
Ruby Type: Array
Ein Array von Hosts, für die diese Konfigurationsdatei gilt.
limit_load_to_session_type
Ruby Type: Array, String
Der/die Sitzungstyp(e), für den/die diese Konfigurationsdatei gilt/gelten.
low_priority_io
Ruby 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_services
Ruby Type: Hash
Geben Sie Dienste an, die beim Bootstrap-Subsystem registriert werden sollen.
nice
Ruby Type: Integer
Der Programmplanungsprioritätswert im Bereich -20
bis 20
.
on_demand
Ruby 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_type
Ruby Type: String
Der beabsichtigte Zweck des Jobs: Adaptive
, Background
, Interactive
, oder Standard
.
program
Ruby 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_arguments
Rubin 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_directories
Ruby Type: Array
Ein Array von nicht leeren Verzeichnissen, die, wenn sie geändert werden, dazu führen, dass ein Job gestartet wird.
root_directory
Ruby Type: String
chroot
in dieses Verzeichnis und führen Sie den Job aus.
run_at_load
Ruby Type: true, false
Starten Sie einen Job einmal (zum Zeitpunkt des Ladens).
sockets
Ruby Type: Hash
Ein Hash von On-Demand-Sockets, die launchd benachrichtigen, wenn ein Job ausgeführt werden soll.
soft_resource_limits
Rubin Typ: Array
Ein Hash von Ressourcenlimits, die einem Job auferlegt werden sollen.
standard_error_path
Ruby Type: String
Die Datei, an die der Standardfehler (stderr
) gesendet wird.
standard_in_path
Ruby Type: String
Die Datei, an die die Standardeingabe (stdin
) gesendet wird.
standard_out_path
Ruby Type: String
Die Datei, an die die Standardausgabe (stdout
) gesendet wird.
start_calendar_interval
Ruby 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_interval
Rubin Typ: Integer
Die Häufigkeit (in Sekunden), mit der ein Job gestartet wird.
start_on_mount
Ruby Type: true, false
Startet jedes Mal einen Job, wenn ein Dateisystem eingehängt wird.
throttle_interval
Ruby Type: Integer / Default Value:10
Die Häufigkeit (in Sekunden), mit der Jobs erzeugt werden dürfen.
time_out
Ruby 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.
umask
Ruby Type: Integer
Ein Dezimalwert, der an umask
übergeben werden soll, bevor ein Job ausgeführt wird.
username
Rubin Typ: String
Wenn launchd als Root-Benutzer ausgeführt wird, der Benutzer, als der der Job ausgeführt werden soll.
wait_for_debugger
Ruby 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_paths
Ruby Type: Array
Ein Array von Pfaden, die, wenn sie geändert werden, dazu führen, dass ein Job gestartet wird.
working_directory
Ruby 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
0
zurü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 zu0
true
zurückgeben. - Ein Block wird als Ruby-Code ausgeführt, der entweder
true
oderfalse
zurückgeben muss. Wenn der Blocktrue
zurückgibt, wird die Guard-Eigenschaft angewendet.Wenn der Blockfalse
zurü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