launchd Resource

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, e working_directory sono le proprietà disponibili per questa risorsa.

Azioni

La risorsa launchd ha le seguenti azioni:

:createPredefinito. Creare un elenco di proprietà launchd.:create_if_missingCrea un elenco di proprietà launchd, se non esiste già.:deleteElimina un elenco di proprietà launchd. Questo scaricherà un demone o un agente, se caricato.:disableDisabilita un elenco di proprietà launchd.:enableCreare 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.:nothingQuesto 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.:restartRiavviare un demone o un agente gestito launchd.

Proprietà

La risorsa launchd ha le seguenti proprietà:

abandon_process_groupRuby 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.

backupRuby Type: Integer, false

Il numero di backup da mantenere in /var/chef/backup. Impostare sufalse per impedire la conservazione dei backup.

cookbookTipo rubino: String

Il nome del libro di cucina in cui si trovano i file di origine.

groupRuby 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.

labelRuby Type: String

L’identificatore univoco per il lavoro.

modeRuby Type: Integer, String | Valore predefinito:'0755'

Una stringa di 3-5 caratteri quotata che definisce la modalità ottale. Per esempio: '755', '0755'o 00755.

ownerTipo 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).

pathRuby 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_hashTipo rubino: Hash

Un Hash di coppie di valori chiave utilizzato per creare l’elenco delle proprietà launchd.

session_typeRuby Type: String

Il tipo di launchd plist da creare. Valori possibili: system(predefinito) o user.

sourceRuby Type: String

Il percorso dell’elenco delle proprietà launchd.

typeRuby Type: String

Il tipo di risorsa. Valori possibili: daemon(default), agent.

abandon_process_groupRuby 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.

debugTipo rubino: true, false

Imposta la maschera di registro su LOG_DEBUG per questo lavoro.

disabledTipo Ruby: true, false | Valore predefinito:false

Suggerimenti a launchctl per non inviare questo lavoro a launchd.

enable_globbingRuby Type: true, false

Aggiorna gli argomenti del programma prima dell’invocazione.

enable_transactionsRuby Type: true, false

Traccia le transazioni in corso; se nessuna, invia il segnale SIGKILL.

environment_variablesRuby Type: Hash

Variabili di ambiente aggiuntive da impostare prima di eseguire un lavoro.

exit_timeoutRuby Type: Integer

La quantità di tempo (in secondi) launchd attende prima di inviare un segnale SIGKILL.

hard_resource_limitsRuby Type: Hash

Un Hash di limiti di risorse da imporre a un lavoro.

inetd_compatibilityRuby 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_groupsRuby Type: true, false

Specificare se initgroups viene chiamato prima di eseguire un lavoro.

keep_aliveTipo 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_eventsRuby 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_onceRuby 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_hostsTipo 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_hostsRuby Type: Array

Un array di host a cui si applica questo file di configurazione.

limit_load_to_session_typeRuby Type: Array, String

Il tipo di sessione a cui si applica questo file di configurazione.

low_priority_ioRuby Type: true, false

Specifica se il kernel sul nodo deve considerare questo demone a bassa priorità durante l’I/O del file system.

mach_servicesRuby Type: Hash

Specifica i servizi da registrare con il sottosistema bootstrap.

niceRuby Type: Integer

Il valore della priorità di programmazione del programma nell’intervallo da -20 a 20.

on_demandRuby 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_typeRuby Type: String

Lo scopo previsto del lavoro: Adaptive, Background, Interactive, oppure Standard.

programRuby 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_argumentsTipo rubino: Array

Il secondo argomento di execvp. Se program non è specificato, thisproperty deve essere specificato e verrà gestito come se fosse thefirst argomento.

queue_directoriesRuby Type: Array

Un array di directory non vuote che, se modificate, causeranno l’avvio di un lavoro.

root_directoryRuby Type: String

chroot in questa directory, quindi eseguire il processo.

run_at_loadRuby Type: true, false

Avvia un lavoro una volta (al momento del caricamento).

socketsRuby Type: Hash

Un Hash di socket on-demand che notificano launchd quando un lavoro deve essere eseguito.

soft_resource_limitsTipo rubino: Array

Un Hash di limiti di risorse da imporre su un lavoro.

standard_error_pathRuby Type: String

Il file a cui viene inviato l’errore standard (stderr).

standard_in_pathRuby Type: String

Il file a cui viene inviato lo standard input (stdin).

standard_out_pathRuby Type: String

Il file a cui viene inviato lo standard output (stdout).

start_calendar_intervalRuby 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_intervalTipo rubino: Integer

La frequenza (in secondi) con cui viene avviato un lavoro.

start_on_mountRuby Type: true, false

Avvia un lavoro ogni volta che viene montato un file system.

throttle_intervalRuby Type: Integer / Valore predefinito:10

La frequenza (in secondi) alla quale i lavori possono essere generati.

time_outRuby 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.

umaskRuby Type: Integer

Un valore decimale da passare a umask prima di eseguire un lavoro.

usernameTipo rubino: String

Quando launchd viene eseguito come utente root, l’utente per eseguire il lavoro come.

wait_for_debuggerRuby Type: true, false

Specifica se launchd ha un lavoro in attesa che un debugger si colleghi prima di eseguire il codice.

watch_pathsRuby Type: Array

Una serie di percorsi che, se modificati, causeranno l’avvio di un lavoro.

working_directoryRuby 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 mayreturn true oltre a 0.
  • Un blocco viene eseguito come codice Ruby che deve restituire trueofalse. Se il blocco restituisce true, viene applicata la proprietà guard.Se il blocco restituisce false, 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



+