É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
, etworking_directory
sont les propriétés disponibles pour cette ressource.
Actions
La ressource launchd comporte les actions suivantes :
:create
Par défaut. Créez une liste de propriétés launchd.:create_if_missing
Créez une liste de propriétés launchd, si elle n’existe pas déjà.:delete
Supprimer une liste de propriétés launchd. Cela déchargera un démon ou un agent, s’il est chargé.:disable
Désactivez une liste de propriétés launchd.:enable
Cré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.:nothing
Ce 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.:restart
Redé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_group
Type 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.
backup
Type Ruby: Entier, false
Le nombre de sauvegardes à conserver dans /var/chef/backup
. Définissez la valeur false
pour empêcher la conservation des sauvegardes.
cookbook
Type Rubis: String
Le nom du livre de recettes dans lequel se trouvent les fichiers source.
group
Type 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.
label
Type Ruby : Chaîne
Identifiant unique de la tâche.
mode
Ruby 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
.
owner
Type 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).
path
Type 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_hash
Type Rubis: Hash
Hachage des paires de valeurs de clé utilisées pour créer la liste de propriétés launchd.
session_type
Type Ruby: Chaîne
Le type de liste de lancement à créer. Valeurs possibles : system
(par défaut) ou user
.
source
Type Ruby: Chaîne
Le chemin d’accès à la liste des propriétés launchd.
type
Type Ruby : Chaîne
Le type de ressource. Valeurs possibles : daemon
(par défaut), agent
.
abandon_process_group
Type 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.
debug
Type Rubis: true, false
Définit le masque de journal sur LOG_DEBUG
pour ce travail.
disabled
Type Ruby : true, false / Valeur par défaut :false
Indique à launchctl
de ne pas soumettre ce travail à launchd.
enable_globbing
Type Ruby : true, false
Mettre à jour les arguments du programme avant l’appel.
enable_transactions
Type Ruby : true, false
Suivre les transactions en cours ; si aucune, envoyez le signal SIGKILL
.
environment_variables
Ruby Type: Hash
Variables d’environnement supplémentaires à définir avant d’exécuter une tâche.
exit_timeout
Ruby Type: Integer
La durée (en secondes) d’attente de launchd avant d’envoyer un signal SIGKILL
.
hard_resource_limits
Type Ruby: Hash
Un Hash des limites de ressources à imposer à une tâche.
inetd_compatibility
Ruby 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_groups
Type Ruby : true, false
Spécifiez si initgroups
est appelé avant d’exécuter une tâche.
keep_alive
Type 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_events
Ruby 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_once
Type 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_hosts
Type 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_hosts
Ruby Type: Array
Un tableau d’hôtes auquel ce fichier de configuration s’applique.
limit_load_to_session_type
Type Ruby : Tableau, Chaîne
Le ou les types de session auxquels ce fichier de configuration s’applique.
low_priority_io
Type 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_services
Type Ruby: Hash
Spécifiez les services à enregistrer dans le sous-système bootstrap.
nice
Type Ruby: Entier
La valeur de priorité de planification du programme dans la plage -20
à 20
.
on_demand
Type 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_type
Ruby Type: String
L’objectif de la tâche: Adaptive
, Background
, Interactive
, ou Standard
.
program
Ruby 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_arguments
Type 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_directories
Ruby 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_directory
Type Ruby: Chaîne
chroot
dans ce répertoire, puis exécutez le travail.
run_at_load
Type Ruby : true, false
Lancez une tâche une fois (au moment où elle est chargée).
sockets
Ruby Type: Hash
Un Hash de sockets à la demande qui notifient launchd lorsqu’une tâche doit être exécutée.
soft_resource_limits
Type Rubis: Array
Un hachage des limites de ressources à imposer à une tâche.
standard_error_path
Ruby Type: Chaîne
Le fichier auquel l’erreur standard (stderr
) est envoyée.
standard_in_path
Ruby Type: String
Le fichier auquel l’entrée standard (stdin
) est envoyée.
standard_out_path
Type Ruby: Chaîne
Le fichier vers lequel la sortie standard (stdout
) est envoyée.
start_calendar_interval
Ruby 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_interval
Type Rubis: Entier
La fréquence (en secondes) à laquelle une tâche est démarrée.
start_on_mount
Type Ruby : true, false
Démarrer une tâche chaque fois qu’un système de fichiers est monté.
throttle_interval
Type Ruby : Entier / Valeur par défaut :10
La fréquence (en secondes) à laquelle les tâches sont autorisées à apparaître.
time_out
Type 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.
umask
Type Ruby : Entier
Une valeur décimale à transmettre à umask
avant d’exécuter une tâche.
username
Type 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_debugger
Type 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_paths
Ruby Type: Array
Un tableau de chemins qui, le cas échéant, sont modifiés, provoquera le démarrage d’une tâche.
working_directory
Type 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 mayreturntrue
en plus de0
. - Un bloc est exécuté en tant que code Ruby qui doit renvoyer
true
oufalse
. Si le bloc renvoietrue
, la propriété guard est appliquée.Si le bloc renvoiefalse
, 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