launchd-Ressource

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, und working_directory sind 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 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 zu 0 true zurückgeben.
  • Ein Block wird als Ruby-Code ausgeführt, der entweder true oderfalse zurückgeben muss. Wenn der Block true zurückgibt, wird die Guard-Eigenschaft angewendet.Wenn der Block false 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



+