Modifica questa pagina nel repository Chef
Questa pagina viene generata dall’origine del client Infra Chef code.To suggerisci una modifica, modifica il launchd.file rb e invia una richiesta pull al repository del client Infra Chef.
Tutte le risorse Infra page
Usa la risorsa launchd per gestire i servizi a livello di sistema (demoni) e i servizi per utente (agenti) sulla piattaforma macOS.
Nuovo in Chef Infra Client 12.8.
Sintassi
La sintassi completa per tutte le proprietà disponibili per la risorsa launchd è:
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
dove:
-
launchd
è la risorsa. -
name
è il nome dato al blocco di risorse. -
action
identifica i passaggi che il client Infra di Chef eseguirà per portare il nodo nello stato desiderato. -
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
, eworking_directory
sono le proprietà disponibili per questa risorsa.
Azioni
La risorsa launchd ha le seguenti azioni:
:create
Predefinito. Creare un elenco di proprietà launchd.:create_if_missing
Crea un elenco di proprietà launchd, se non esiste già.:delete
Elimina un elenco di proprietà launchd. Questo scaricherà un demone o un agente, se caricato.:disable
Disabilita un elenco di proprietà launchd.:enable
Creare un elenco di proprietà launchd, quindi assicurarsi che sia abilitato. Se un elenco di proprietà launchd esiste già, ma non corrisponde, aggiorna l’elenco di proprietà in modo che corrisponda, quindi riavvia il demone o l’agente.:nothing
Questo blocco di risorse non agisce a meno che non venga notificato da un’altra risorsa per eseguire l’azione. Una volta notificato, questo blocco di risorse viene eseguito immediatamenteo viene messo in coda per essere eseguito alla fine di un’esecuzione del client Infra Chef.:restart
Riavviare un demone o un agente gestito launchd.
Proprietà
La risorsa launchd ha le seguenti proprietà:
abandon_process_group
Ruby Type: true, false
Se un lavoro muore, tutti i processi rimanenti con lo stesso ID di processo potrebbero continuare a funzionare. Impostare a vero per uccidere tutti i processi rimanenti.
backup
Ruby Type: Integer, false
Il numero di backup da mantenere in /var/chef/backup
. Impostare sufalse
per impedire la conservazione dei backup.
cookbook
Tipo rubino: String
Il nome del libro di cucina in cui si trovano i file di origine.
group
Ruby Type: String, Integer
Quando launchd viene eseguito come utente root, il gruppo per eseguire il lavoro come.Se la proprietà username
è specificata e questa proprietà non lo è,questo valore viene impostato sul gruppo predefinito per l’utente.
label
Ruby Type: String
L’identificatore univoco per il lavoro.
mode
Ruby Type: Integer, String | Valore predefinito:'0755'
Una stringa di 3-5 caratteri quotata che definisce la modalità ottale. Per esempio: '755'
, '0755'
o 00755
.
owner
Tipo rubino: Integer, String
Una stringa o un ID che identifica il proprietario del gruppo in base al nome utente, inclusi nomi utente completi come domain\user
ouser@domain
. Se questo valore non è specificato, i proprietari esistentirimangono invariati e le nuove assegnazioni del proprietario utilizzano l’utente corrente(quando necessario).
path
Ruby Type: String
Il percorso della directory. L’utilizzo di un percorso completamente qualificato èconsigliato, ma non è sempre richiesto. Valore predefinito: name
del blocco di risorse. Vedi la sezione “Sintassi” sopra per ulteriori informazioni.
plist_hash
Tipo rubino: Hash
Un Hash di coppie di valori chiave utilizzato per creare l’elenco delle proprietà launchd.
session_type
Ruby Type: String
Il tipo di launchd plist da creare. Valori possibili: system
(predefinito) o user
.
source
Ruby Type: String
Il percorso dell’elenco delle proprietà launchd.
type
Ruby Type: String
Il tipo di risorsa. Valori possibili: daemon
(default), agent
.
abandon_process_group
Ruby Type: true, false
Se un lavoro muore, tutti i processi rimanenti con lo stesso ID di processo potrebbero continuare a funzionare. Impostare a vero per uccidere tutti i processi rimanenti.
debug
Tipo rubino: true, false
Imposta la maschera di registro su LOG_DEBUG
per questo lavoro.
disabled
Tipo Ruby: true, false | Valore predefinito:false
Suggerimenti a launchctl
per non inviare questo lavoro a launchd.
enable_globbing
Ruby Type: true, false
Aggiorna gli argomenti del programma prima dell’invocazione.
enable_transactions
Ruby Type: true, false
Traccia le transazioni in corso; se nessuna, invia il segnale SIGKILL
.
environment_variables
Ruby Type: Hash
Variabili di ambiente aggiuntive da impostare prima di eseguire un lavoro.
exit_timeout
Ruby Type: Integer
La quantità di tempo (in secondi) launchd attende prima di inviare un segnale SIGKILL
.
hard_resource_limits
Ruby Type: Hash
Un Hash di limiti di risorse da imporre a un lavoro.
inetd_compatibility
Ruby Type: Hash
Specifica se un demone si aspetta di essere eseguito come se fosse stato lanciato da inetd
. Impostare a wait => true
per passare i descrittori di file standard input, output, anderror. Impostare su wait => false
per chiamare la chiamata di sistema accept
per conto del lavoro, quindi passare i descrittori di file di input,output e errore standard.
init_groups
Ruby Type: true, false
Specificare se initgroups
viene chiamato prima di eseguire un lavoro.
keep_alive
Tipo rubino: true, false, Hash
Mantenere un lavoro in esecuzione continua (true) o consentire alla domanda e alle condizioni sul nodo di determinare se il lavoro continua a funzionare (false
).
Novità in Chef Client 12.14
launch_events
Ruby Type: Hash
Specifica tipi di eventi di livello superiore da utilizzare come origini eventi launch-on-demand.
Novità in Chef Infra Client 15.1
launch_only_once
Ruby Type: true, false
Specifica se un lavoro può essere eseguito una sola volta. Impostare questo valore su true
se un lavoro non può essere riavviato senza un riavvio completo della macchina.
limit_load_from_hosts
Tipo rubino: Array
Un array di host a cui questo file di configurazione non si applica,cioè “applica questo file di configurazione a tutti gli host non specificati in questo array”.
limit_load_to_hosts
Ruby Type: Array
Un array di host a cui si applica questo file di configurazione.
limit_load_to_session_type
Ruby Type: Array, String
Il tipo di sessione a cui si applica questo file di configurazione.
low_priority_io
Ruby Type: true, false
Specifica se il kernel sul nodo deve considerare questo demone a bassa priorità durante l’I/O del file system.
mach_services
Ruby Type: Hash
Specifica i servizi da registrare con il sottosistema bootstrap.
nice
Ruby Type: Integer
Il valore della priorità di programmazione del programma nell’intervallo da -20
a 20
.
on_demand
Ruby Type: true, false
Mantieni vivo un lavoro. Si applica solo a macOS versione 10.4(e precedenti); utilizzare keep_alive
invece per le versioni più recenti.
process_type
Ruby Type: String
Lo scopo previsto del lavoro: Adaptive
, Background
, Interactive
, oppure Standard
.
program
Ruby Type: String
Il primo argomento di execvp
, in genere il nome del file associato al file da eseguire. Questo valore deve essere specificato seprogram_arguments
non è specificato e viceversa.
program_arguments
Tipo rubino: Array
Il secondo argomento di execvp
. Se program
non è specificato, thisproperty deve essere specificato e verrà gestito come se fosse thefirst argomento.
queue_directories
Ruby Type: Array
Un array di directory non vuote che, se modificate, causeranno l’avvio di un lavoro.
root_directory
Ruby Type: String
chroot
in questa directory, quindi eseguire il processo.
run_at_load
Ruby Type: true, false
Avvia un lavoro una volta (al momento del caricamento).
sockets
Ruby Type: Hash
Un Hash di socket on-demand che notificano launchd quando un lavoro deve essere eseguito.
soft_resource_limits
Tipo rubino: Array
Un Hash di limiti di risorse da imporre su un lavoro.
standard_error_path
Ruby Type: String
Il file a cui viene inviato l’errore standard (stderr
).
standard_in_path
Ruby Type: String
Il file a cui viene inviato lo standard input (stdin
).
standard_out_path
Ruby Type: String
Il file a cui viene inviato lo standard output (stdout
).
start_calendar_interval
Ruby Type: Hash
Un Hash (simile a crontab
) che definisce la frequenza del calendario in cui viene avviato un lavoro. Ad esempio:{ Minute => "0", Hour => "20", Day => "*", Weekday => "1-5", Month => "*" }
eseguirà un lavoro alle 8: 00 PM tutti i giorni, dal lunedì al venerdì, ogni mese dell’anno.
start_interval
Tipo rubino: Integer
La frequenza (in secondi) con cui viene avviato un lavoro.
start_on_mount
Ruby Type: true, false
Avvia un lavoro ogni volta che viene montato un file system.
throttle_interval
Ruby Type: Integer / Valore predefinito:10
La frequenza (in secondi) alla quale i lavori possono essere generati.
time_out
Ruby Type: Integer
La quantità di tempo (in secondi) che un lavoro può essere inattivo prima del timesout. Se non viene specificato alcun valore, verrà utilizzato il valore di timeout predefinito per launchdwill.
umask
Ruby Type: Integer
Un valore decimale da passare a umask
prima di eseguire un lavoro.
username
Tipo rubino: String
Quando launchd viene eseguito come utente root, l’utente per eseguire il lavoro come.
wait_for_debugger
Ruby Type: true, false
Specifica se launchd ha un lavoro in attesa che un debugger si colleghi prima di eseguire il codice.
watch_paths
Ruby Type: Array
Una serie di percorsi che, se modificati, causeranno l’avvio di un lavoro.
working_directory
Ruby Type: String
chdir
in questa directory, quindi eseguire il processo.
Funzionalità delle risorse comuni
Le risorse Chef includono proprietà comuni, notifiche e guardie delle risorse.
Proprietà comuni
Le seguenti proprietà sono comuni a ogni risorsa:
compile_time
Tipo Ruby: true, false / Valore predefinito: false
Controlla la fase durante la quale la risorsa viene eseguita sul nodo. Impostare a vero per l’esecuzione mentre la raccolta di risorse è in fase di creazione (compile phase
). Impostare su false per l’esecuzione mentre il client Infra Chef sta configurando il nodo (converge phase
).
ignore_failure
Tipo Ruby: true, false,: quiet | Valore predefinito: false
Continuare a eseguire una ricetta se una risorsa non riesce per qualsiasi motivo. :quiet
non visualizzerà la traccia completa dello stack e la ricetta continuerà a funzionare se una risorsa non riesce.
retries
Tipo rubino: valore intero / predefinito: 0
Il numero di tentativi di rilevare le eccezioni e riprovare la risorsa.
retry_delay
Tipo rubino: valore intero / predefinito: 2
Il ritardo del tentativo (in secondi).
sensitive
Tipo Ruby: true, false / Valore predefinito: false
Assicurarsi che i dati sensibili delle risorse non siano registrati da Chef InfraClient.
Notifiche
notifies
Tipo Rubino: Simbolo, ‘ Chef::Resource ‘
Una risorsa può notificare a un’altra risorsa di agire quando il suo statechanges. Specificare un 'resource'
, il :action
che resourceshould prendere, e quindi il :timer
per tale azione. Una risorsa può notificare più di una risorsa; utilizzare un’istruzione notifies
per ogni risorsa da notificare.
Se la risorsa referenziata non esiste, viene visualizzato un errore raised.In al contrario, subscribes
non fallirà se il sourceresource non viene trovato.
Un timer specifica il punto durante l’esecuzione di un client Infra Chef in cui viene eseguita l’untificazione. Sono disponibili i seguenti timer:
:before
Specifica che l’azione su una risorsa notificata deve essere eseguita prima di elaborare il blocco di risorse in cui è localizzata la notifica.
:delayed
Predefinito. Specifica che una notifica deve essere accodata e quindi eseguita al termine dell’esecuzione di un client Infra Chef.
:immediate
,:immediately
Specifica che una notifica deve essere eseguita immediatamente, perresource notified.
La sintassi per notifies
è:
notifies :action, 'resource', :timer
subscribes
Tipo Rubino: Simbolo, ‘ Chef::Resource ‘
Una risorsa può ascoltare un’altra risorsa e quindi agire se lo stato della risorsa ascoltata cambia. Specificare un'resource'
, il :action
da adottare, e quindi il :timer
perquesta azione.
Si noti che subscribes
non applica l’azione specificata alla sorgente che ascolta, ad esempio:
file '/etc/nginx/ssl/example.crt' do mode '0600' owner 'root'endservice 'nginx' do subscribes :reload, 'file', :immediatelyend
In questo caso la proprietà subscribes
ricarica ilnginx
servicewhenever il suo file di certificato, che si trova sotto /etc/nginx/ssl/example.crt
, viene aggiornato. subscribes
non effettua alcuna modifica al file del certificato stesso, si limita ad ascoltare una modifica al file ed esegue l’azione :reload
per la sua risorsa (in questo esempio nginx
) quando viene rilevata una modifica.
Se l’altra risorsa non esiste, la sottoscrizione non genererà anerror. Contrasto con la semantica più rigorosa di notifies
, che genererà un errore se l’altra risorsa non esiste.
Un timer specifica il punto durante l’esecuzione di un client Infra Chef in cui viene eseguita l’untificazione. Sono disponibili i seguenti timer:
:before
Specifica che l’azione su una risorsa notificata deve essere eseguita prima di elaborare il blocco di risorse in cui è localizzata la notifica.
:delayed
Predefinito. Specifica che una notifica deve essere accodata e quindi eseguita al termine dell’esecuzione di un client Infra Chef.
:immediate
,:immediately
Specifica che una notifica deve essere eseguita immediatamente, perresource notified.
La sintassi per subscribes
è:
subscribes :action, 'resource', :timer
Guards
Una proprietà guard può essere utilizzata per valutare lo stato di un nodo durante la fase di esecuzione di un client Infra Chef. Sulla base dei risultati di thisevaluation, una proprietà guard viene quindi utilizzata per indicare a Chef Infra Client se continuare a eseguire una risorsa. Una proprietà guard accetta oun valore stringa o un valore di blocco Ruby:
- Una stringa viene eseguita come comando di shell. Se il comando restituisce
0
, viene applicata la protezione. Se il comando restituisce qualsiasi altro valore, allorala proprietà guard non viene applicata. Le guardie stringa in apowershell_script eseguono i comandi di Windows PowerShell e mayreturntrue
oltre a0
. - Un blocco viene eseguito come codice Ruby che deve restituire
true
ofalse
. Se il blocco restituiscetrue
, viene applicata la proprietà guard.Se il blocco restituiscefalse
, la proprietà guard non viene applicata.
Una proprietà guard è utile per garantire che una risorsa sia idempotente consentendo a tale risorsa di testare lo stato desiderato mentre è in esecuzione, e quindi se lo stato desiderato è presente, per Chef InfraClient non fare nulla.
Proprietà
Le seguenti proprietà possono essere utilizzate per definire un guard che viene valutato durante la fase di esecuzione di un client Infra Chef:
not_if
Impedire l’esecuzione di una risorsa quando la condizione restituisce true
.
only_if
Consentire l’esecuzione di una risorsa solo se la condizione restituisce true
.
Esempi
I seguenti esempi dimostrano vari approcci per l’utilizzo della risorsa launchd in ricette:
Creare un demone di avvio da un file di ricettario