Ressource launchd

Éditez cette page dans le référentiel Chef

Cette page est générée à partir de la source client de Chef Infra code.To suggérer un changement, modifier le launchd.rb dépose et soumet une pull request au référentiel client Chef Infra.

Page Toutes les ressources Infra

Utilisez la ressource launchd pour gérer les services à l’échelle du système (démons) et les services par utilisateur (agents) sur la plate-forme macOS.

Nouveau dans le client Chef Infra 12.8.

Syntaxe

La syntaxe complète de toutes les propriétés disponibles pour la ressource launchd est:

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

où:

  • launchd est la ressource.
  • name est le nom donné au bloc de ressources.
  • action identifie les étapes que le client Chef Infra prendra pour amener le nœud dans l’état souhaité.
  • 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, et working_directory sont les propriétés disponibles pour cette ressource.

Actions

La ressource launchd comporte les actions suivantes :

:createPar défaut. Créez une liste de propriétés launchd.:create_if_missingCréez une liste de propriétés launchd, si elle n’existe pas déjà.:deleteSupprimer une liste de propriétés launchd. Cela déchargera un démon ou un agent, s’il est chargé.:disableDésactivez une liste de propriétés launchd.:enableCréez une liste de propriétés launchd, puis assurez-vous qu’elle est activée. Si une liste de propriétés launchd existe déjà, mais ne correspond pas, met à jour la liste de propriétés pour qu’elle corresponde, puis redémarre le démon ou l’agent.:nothingCe bloc de ressources n’agit pas à moins d’être notifié par une autre ressource pour agir. Une fois notifié, ce bloc de ressources s’exécute immédiatement ou est mis en file d’attente pour s’exécuter à la fin de l’exécution d’un client Infra Chef.:restartRedémarrez un démon ou un agent géré par launchd.

Propriétés

La ressource launchd possède les propriétés suivantes :

abandon_process_groupType Ruby : true, false

Si une tâche meurt, tous les processus restants avec le même ID de processus peuvent continuer à s’exécuter. Défini sur true pour tuer tous les processus restants.

backupType Ruby: Entier, false

Le nombre de sauvegardes à conserver dans /var/chef/backup. Définissez la valeur false pour empêcher la conservation des sauvegardes.

cookbookType Rubis: String

Le nom du livre de recettes dans lequel se trouvent les fichiers source.

groupType Ruby: Chaîne, Entier

Lorsque launchd est exécuté en tant qu’utilisateur root, le groupe sous lequel exécuter le travail est.Si la propriété username est spécifiée et que cette propriété ne l’est pas, cette valeur est définie sur le groupe par défaut pour l’utilisateur.

labelType Ruby : Chaîne

Identifiant unique de la tâche.

modeRuby Type: Entier, Chaîne / Valeur par défaut :'0755'

Une chaîne de 3 à 5 caractères entre guillemets qui définit le mode octal. Par exemple : '755', '0755' ou 00755.

ownerType Rubis: Entier, Chaîne

Chaîne ou ID qui identifie le propriétaire du groupe par nom d’utilisateur, y compris les noms d’utilisateur complets tels que domain\user ou user@domain. Si cette valeur n’est pas spécifiée, les propriétaires existants restent inchangés et les nouvelles affectations de propriétaires utilisent l’utilisateur actuel (si nécessaire).

pathType Ruby: Chaîne

Le chemin d’accès au répertoire. L’utilisation d’un chemin entièrement qualifié est recommandée, mais n’est pas toujours requise. Valeur par défaut : name du bloc de ressources. Voir la section « Syntaxe » ci-dessus pour plus d’informations.

plist_hashType Rubis: Hash

Hachage des paires de valeurs de clé utilisées pour créer la liste de propriétés launchd.

session_typeType Ruby: Chaîne

Le type de liste de lancement à créer. Valeurs possibles : system (par défaut) ou user.

sourceType Ruby: Chaîne

Le chemin d’accès à la liste des propriétés launchd.

typeType Ruby : Chaîne

Le type de ressource. Valeurs possibles : daemon (par défaut), agent.

abandon_process_groupType Ruby: true, false

Si un travail meurt, tous les processus restants avec le même ID de processus peuvent continuer à s’exécuter. Défini sur true pour tuer tous les processus restants.

debugType Rubis: true, false

Définit le masque de journal sur LOG_DEBUG pour ce travail.

disabledType Ruby : true, false / Valeur par défaut :false

Indique à launchctl de ne pas soumettre ce travail à launchd.

enable_globbingType Ruby : true, false

Mettre à jour les arguments du programme avant l’appel.

enable_transactionsType Ruby : true, false

Suivre les transactions en cours ; si aucune, envoyez le signal SIGKILL.

environment_variablesRuby Type: Hash

Variables d’environnement supplémentaires à définir avant d’exécuter une tâche.

exit_timeoutRuby Type: Integer

La durée (en secondes) d’attente de launchd avant d’envoyer un signal SIGKILL.

hard_resource_limitsType Ruby: Hash

Un Hash des limites de ressources à imposer à une tâche.

inetd_compatibilityRuby Type: Hash

Spécifie si un démon s’attend à être exécuté comme s’il avait été lancé à partir de inetd. Définissez wait => true pour passer les descripteurs de fichiers d’entrée, de sortie et d’erreur standard. Définissez la valeur wait => false pour appeler l’appel système accept au nom de la tâche, puis transmettez les descripteurs d’entrée, de sortie et de fichier d’erreur standard.

init_groupsType Ruby : true, false

Spécifiez si initgroups est appelé avant d’exécuter une tâche.

keep_aliveType Rubis: true, false, Hash

Maintient un travail en cours d’exécution en continu (true) ou autorise la demande et les conditions sur le nœud pour déterminer si le travail continue de s’exécuter (false).

Nouveau dans Chef Client 12.14

launch_eventsRuby Type:Hash

Spécifiez les types d’événements de niveau supérieur à utiliser comme sources d’événements de lancement à la demande.

Nouveau dans le client Chef Infra 15.1

launch_only_onceType Ruby : true, false

Spécifiez si une tâche ne peut être exécutée qu’une seule fois. Définissez cette valeur sur true si une tâche ne peut pas être redémarrée sans un redémarrage complet de la machine.

limit_load_from_hostsType Rubis: Array

Un tableau d’hôtes auquel ce fichier de configuration ne s’applique pas, c’est-à-dire « appliquer ce fichier de configuration à tous les hôtes non spécifiés dans ce tableau ».

limit_load_to_hostsRuby Type: Array

Un tableau d’hôtes auquel ce fichier de configuration s’applique.

limit_load_to_session_typeType Ruby : Tableau, Chaîne

Le ou les types de session auxquels ce fichier de configuration s’applique.

low_priority_ioType Ruby : true, false

Spécifiez si le noyau du nœud doit considérer ce démon comme de faible priorité lors des E/S du système de fichiers.

mach_servicesType Ruby: Hash

Spécifiez les services à enregistrer dans le sous-système bootstrap.

niceType Ruby: Entier

La valeur de priorité de planification du programme dans la plage -20 à 20.

on_demandType Ruby: true, false

Gardez un travail en vie. S’applique uniquement à la version 10.4 de macOS (et versions antérieures) ; utilisez keep_alive à la place pour les versions plus récentes.

process_typeRuby Type: String

L’objectif de la tâche: Adaptive, Background, Interactive, ou Standard.

programRuby Type: String

Le premier argument de execvp, généralement le nom de fichier associé au fichier à exécuter. Cette valeur doit être spécifiée si program_arguments n’est pas spécifié, et vice-versa.

program_argumentsType Rubis: Tableau

Le deuxième argument de execvp. Si program n’est pas spécifié, cette propriété doit être spécifiée et sera traitée comme s’il s’agissait du premier argument.

queue_directoriesRuby Type: Array

Un tableau de répertoires non vides qui, le cas échéant, sont modifiés, provoquera le démarrage d’une tâche.

root_directoryType Ruby: Chaîne

chroot dans ce répertoire, puis exécutez le travail.

run_at_loadType Ruby : true, false

Lancez une tâche une fois (au moment où elle est chargée).

socketsRuby Type: Hash

Un Hash de sockets à la demande qui notifient launchd lorsqu’une tâche doit être exécutée.

soft_resource_limitsType Rubis: Array

Un hachage des limites de ressources à imposer à une tâche.

standard_error_pathRuby Type: Chaîne

Le fichier auquel l’erreur standard (stderr) est envoyée.

standard_in_pathRuby Type: String

Le fichier auquel l’entrée standard (stdin) est envoyée.

standard_out_pathType Ruby: Chaîne

Le fichier vers lequel la sortie standard (stdout) est envoyée.

start_calendar_intervalRuby Type: Hash

Un Hash (similaire à crontab) qui définit la fréquence du calendrier au démarrage d’une tâche. Par exemple : { Minute => "0", Hour => "20", Day => "*", Weekday => "1-5", Month => "*" } exécutera un travail à 20h00 tous les jours, du lundi au vendredi, tous les mois de l’année.

start_intervalType Rubis: Entier

La fréquence (en secondes) à laquelle une tâche est démarrée.

start_on_mountType Ruby : true, false

Démarrer une tâche chaque fois qu’un système de fichiers est monté.

throttle_intervalType Ruby : Entier / Valeur par défaut :10

La fréquence (en secondes) à laquelle les tâches sont autorisées à apparaître.

time_outType Ruby : Entier

La durée (en secondes) pendant laquelle une tâche peut être inactive avant son expiration. Si aucune valeur n’est spécifiée, la valeur de délai d’expiration par défaut pour launchd sera utilisée.

umaskType Ruby : Entier

Une valeur décimale à transmettre à umask avant d’exécuter une tâche.

usernameType Rubis: String

Lorsque launchd est exécuté en tant qu’utilisateur root, l’utilisateur doit exécuter le travail en tant qu’utilisateur.

wait_for_debuggerType Ruby : true, false

Spécifiez si launchd a une tâche qui attend qu’un débogueur s’attache avant d’exécuter du code.

watch_pathsRuby Type: Array

Un tableau de chemins qui, le cas échéant, sont modifiés, provoquera le démarrage d’une tâche.

working_directoryType Ruby: Chaîne

chdir dans ce répertoire, puis exécutez le travail.

Fonctionnalité des ressources communes

Les ressources Chef incluent des propriétés communes, des notifications et des gardes de ressources.

Propriétés communes

Les propriétés suivantes sont communes à chaque ressource:

compile_time

Type Ruby : true, false / Valeur par défaut: false

Contrôlez la phase pendant laquelle la ressource est exécutée sur le nœud. Défini sur true pour s’exécuter pendant la construction de la collection de ressources (compile phase). Définissez la valeur false pour s’exécuter pendant que le client Chef Infra configure le nœud (le converge phase).

ignore_failure

Type Ruby: true, false,: quiet / Valeur par défaut: false

Continuez à exécuter une recette si une ressource échoue pour une raison quelconque. :quiet n’affichera pas la trace complète de la pile et la recette continuera à s’exécuter si une ressource échoue.

retries

Type Ruby: Entier / Valeur par défaut: 0

Nombre de tentatives pour intercepter des exceptions et réessayer la ressource.

retry_delay

Type Ruby: Entier / Valeur par défaut: 2

Le délai de nouvelle tentative (en secondes).

sensitive

Type Ruby: true, false / Valeur par défaut: false

Assurez-vous que les données de ressources sensibles ne sont pas enregistrées par Chef InfraClient.

Notifications

notifies

Ruby Type: Symbole, ‘Chef::Ressource ‘

Une ressource peut avertir une autre ressource de prendre des mesures lorsque son état change. Spécifiez un 'resource', le :action que resourceshould prendre, puis le :timer pour cette action. Une ressource peut notifier plus d’une ressource ; utilisez une instruction notifies pour que chaque source soit notifiée.

Si la ressource référencée n’existe pas, une erreur est raised.In en revanche, subscribes n’échouera pas si la source n’est pas trouvée.

Un temporisateur spécifie le point lors de l’exécution d’un client Infra Chef auquel l’anotification est exécutée. Les minuteries suivantes sont disponibles:

:before

Spécifie que l’action sur une ressource notifiée doit être exécutée avant de traiter le bloc de ressources dans lequel la notification est située.

:delayed

Par défaut. Spécifie qu’une notification doit être mise en file d’attente, puis exécutée à la fin de l’exécution d’un client Chef Infra.

:immediate,:immediately

Spécifie qu’une notification doit être exécutée immédiatement, perresource notifiée.

La syntaxe pour notifies est:

notifies :action, 'resource', :timer

subscribes

Type de Rubis: Symbole, ‘Chef::Ressource ‘

Une ressource peut écouter une autre ressource, puis agir si l’état de la ressource écoutée change. Spécifiez un 'resource', le :action à prendre, puis le :timer pour cette action.

Notez que subscribes n’applique pas l’action spécifiée à la source qu’elle écoute – par exemple:

file '/etc/nginx/ssl/example.crt' do mode '0600' owner 'root'endservice 'nginx' do subscribes :reload, 'file', :immediatelyend

Dans ce cas, la propriété subscribes recharge le service nginx chaque fois que son fichier de certificat, situé sous /etc/nginx/ssl/example.crt, est mis à jour. subscribes n’apporte aucune modification au fichier de certificat lui-même, il écoute simplement une modification du fichier et exécute l’action :reload pour sa ressource (dans cet exemple nginx) lorsqu’une modification est détectée.

Si l’autre ressource n’existe pas, l’abonnement ne déclenchera pas d’erreur. Contrastez cela avec la sémantique plus stricte de notifies, qui provoquera une erreur si l’autre ressource n’existe pas.

Un temporisateur spécifie le point lors de l’exécution d’un client Infra Chef auquel l’anotification est exécutée. Les minuteries suivantes sont disponibles:

:before

Spécifie que l’action sur une ressource notifiée doit être exécutée avant de traiter le bloc de ressources dans lequel la notification est située.

:delayed

Par défaut. Spécifie qu’une notification doit être mise en file d’attente, puis exécutée à la fin de l’exécution d’un client Chef Infra.

:immediate,:immediately

Spécifie qu’une notification doit être exécutée immédiatement, perresource notifiée.

La syntaxe pour subscribes est:

subscribes :action, 'resource', :timer

Guards

Une propriété guard peut être utilisée pour évaluer l’état d’un nœud pendant la phase d’exécution d’un client Infra Chef. Sur la base des résultats de cette évaluation, une propriété guard est ensuite utilisée pour indiquer au client Chef Infra si elle doit continuer à exécuter une ressource. Une propriété guard accepte eithera une valeur de chaîne ou une valeur de bloc Ruby:

  • Une chaîne est exécutée en tant que commande shell. Si la commande renvoie 0, la garde est appliquée. Si la commande renvoie une autre valeur, alorsla propriété guard n’est pas appliquée. Les gardes de chaînes dans apowershell_script exécutent les commandes Windows PowerShell et mayreturn true en plus de 0.
  • Un bloc est exécuté en tant que code Ruby qui doit renvoyer true ou false. Si le bloc renvoie true, la propriété guard est appliquée.Si le bloc renvoie false, la propriété guard n’est pas appliquée.

Une propriété guard est utile pour s’assurer qu’une ressource est idempotente en permettant à cette ressource de tester l’état souhaité tel qu’il est exécuté, puis si l’état souhaité est présent, pour que Chef InfraClient ne fasse rien.

Propriétés

Les propriétés suivantes peuvent être utilisées pour définir un garde évalué pendant la phase d’exécution d’un client Chef Infra exécuté:

not_if

Empêche l’exécution d’une ressource lorsque la condition renvoie true.

only_if

Autorise l’exécution d’une ressource uniquement si la condition renvoie true.

Exemples

Les exemples suivants illustrent différentes approches d’utilisation de la ressource launchd dans les recettes :

Créer un démon de lancement à partir d’un fichier de livre de recettes



+