Editar esta página en el repositorio Chef
Esta página se genera a partir de la fuente de cliente Infra de Chef code.To sugerir un cambio, editar el launchd.archivar rb y enviar una solicitud de extracción al repositorio de clientes de Chef Infra.
Página Todos los recursos de Infra
Utilice el recurso launchd para administrar servicios de todo el sistema (demonios) y servicios por usuario (agentes) en la plataforma macOS.
Nuevo en Chef Infra Client 12.8.
Sintaxis
La sintaxis completa de todas las propiedades disponibles para el recurso launchd es:
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
donde:
-
launchd
es el recurso. -
name
es el nombre dado al bloque de recursos. -
action
identifica qué pasos tomará Chef Infra Client para llevar el nodo al estado deseado. -
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
, yworking_directory
son las propiedades disponibles para este recurso.
Acciones
El recurso launchd tiene las siguientes acciones:
:create
Predeterminado. Cree una lista de propiedades de launchd.:create_if_missing
Cree una lista de propiedades launchd, si aún no existe.:delete
Eliminar una lista de propiedades de launchd. Esto descargará un demonio o agente, si está cargado.:disable
Deshabilitar una lista de propiedades de launchd.:enable
Cree una lista de propiedades launchd y, a continuación, asegúrese de que esté habilitada. Si ya existe una lista de propiedades de launchd, pero no coincide, actualiza la lista de propiedades para que coincida y, a continuación, reinicia el demonio o el agente.:nothing
Este bloque de recursos no actúa a menos que se lo notifique otra acción de recurso totake. Una vez notificado, este bloque de recursos se ejecuta inmediatamente o se pone en cola para ejecutarse al final de una ejecución de cliente de Infra de Chef.:restart
Reinicie un demonio o agente administrado de launchd.
Propiedades
El recurso launchd tiene las siguientes propiedades:
abandon_process_group
Tipo Ruby: verdadero, falso
Si un trabajo muere, todos los procesos restantes con el mismo ID de proceso pueden seguir ejecutándose. Se establece en true para eliminar todos los procesos restantes.
backup
Tipo de Ruby: Entero, falso
El número de copias de seguridad que se mantendrán en /var/chef/backup
. Establezcafalse
para evitar que se conserven copias de seguridad.
cookbook
Tipo Rubí: String
El nombre del libro de cocina en el que se encuentran los archivos de origen.
group
Ruby Type: String, Integer
Cuando launchd se ejecuta como usuario root, el grupo como el que se ejecuta el trabajo.Si se especifica la propiedad username
y esta propiedad no,este valor se establece en el grupo predeterminado para el usuario.
label
Ruby Type: String
El identificador único para el trabajo.
mode
Tipo Ruby: Entero, Cadena / Valor predeterminado:'0755'
Una cadena de caracteres entre 3 y 5 comillas que define el modo octal. Por ejemplo: '755'
, '0755'
, o 00755
.
owner
Tipo Rubí: Entero, Cadena
Cadena o ID que identifica al propietario del grupo por nombre de usuario,incluidos nombres de usuario completos, como domain\user
ouser@domain
. Si no se especifica este valor, los propietarios existentes permanecerán sin cambios y las nuevas asignaciones de propietarios usarán el usuario actual (cuando sea necesario).
path
Ruby Type: String
La ruta al directorio. Se recomienda el uso de un camino totalmente cualificado, pero no siempre es necesario. Valor predeterminado: el name
del bloque de recursos. Consulte la sección» Sintaxis » anterior para obtener más información.
plist_hash
Tipo Rubí: Hash
Un Hash de pares de valores de clave utilizado para crear la lista de propiedades launchd.
session_type
Ruby Type: String
El tipo de lista de lanzamiento a crear. Valores posibles: system
(predeterminado) o user
.
source
Ruby Type: String
La ruta de acceso a la lista de propiedades launchd.
type
Tipo de Ruby: Cadena
El tipo de recurso. Valores posibles: daemon
(predeterminado), agent
.
abandon_process_group
Tipo Ruby: verdadero, falso
Si un trabajo muere, todos los procesos restantes con el mismo ID de proceso pueden seguir en ejecución. Se establece en true para eliminar todos los procesos restantes.
debug
Tipo Rubí: true, false
Establece la máscara de registro en LOG_DEBUG
para este trabajo.
disabled
Tipo de Ruby: verdadero, falso / Valor predeterminado:false
Insinúa a launchctl
que no envíe este trabajo a launchd.
enable_globbing
Ruby Type: true, false
Actualizar los argumentos del programa antes de la invocación.
enable_transactions
Tipo Ruby: true, false
Realizar un seguimiento de las transacciones en curso; si no hay ninguna, envíe la señal SIGKILL
.
environment_variables
Tipo Ruby: Hash
Variables de entorno adicionales que se deben establecer antes de ejecutar un trabajo.
exit_timeout
Tipo Ruby: Entero
La cantidad de tiempo (en segundos) que launchd espera antes de enviar una señal SIGKILL
.
hard_resource_limits
Tipo Ruby: Hash
Un Hash de límites de recursos que se impondrán en un trabajo.
inetd_compatibility
Ruby Type: Hash
Especifica si un demonio espera ser ejecutado como si fuera lanzado desdeinetd
. Establezca wait => true
para pasar descriptores de archivo de entrada, salida y anderror estándar. Establezca wait => false
para llamar a la llamada al sistema accept
en nombre del trabajo y,a continuación, pase los descriptores de archivo de entrada, salida y error estándar.
init_groups
Ruby Type: true, false
Especifique si se llama a initgroups
antes de ejecutar un trabajo.
keep_alive
Tipo rubí: true, false, Hash
Mantener un trabajo en ejecución continua (true) o permitir que la demanda y las condiciones en el nodo determinen si el trabajo se sigue ejecutando (false
).
Nuevo en Chef Client 12.14
launch_events
Tipo Ruby: Hash
Especifique los tipos de eventos de nivel superior que se utilizarán como fuentes de eventos de lanzamiento bajo demanda.
Nuevo en Chef Infra Client 15.1
launch_only_once
Tipo Ruby: verdadero, falso
Especifique si un trabajo se puede ejecutar una sola vez. Establezca este valor en true
si un trabajo no se puede reiniciar sin un reinicio completo de la máquina.
limit_load_from_hosts
Tipo de rubí: Array
Un array de hosts a los que no se aplica este archivo de configuración,es decir, «aplicar este archivo de configuración a todos los hosts no especificados en este array».
limit_load_to_hosts
Ruby Type: Array
Una matriz de hosts a la que se aplica este archivo de configuración.
limit_load_to_session_type
Ruby Type: Array, String
El tipo de sesión al que se aplica este archivo de configuración.
low_priority_io
Ruby Type: true, false
Especifique si el núcleo del nodo debe considerar que este demonio tiene baja prioridad durante la E/S del sistema de archivos.
mach_services
Ruby Type: Hash
Especifique los servicios que se registrarán con el subsistema de arranque.
nice
Tipo Ruby: Entero
El valor de prioridad de programación del programa en el rango -20
a 20
.
on_demand
Tipo de Ruby: verdadero, falso
Mantener vivo un trabajo. Solo se aplica a macOS versión 10.4(y anterior); use keep_alive
en su lugar para versiones más recientes.
process_type
Tipo de Ruby: Cadena
El propósito previsto del trabajo: Adaptive
, Background
, Interactive
, o Standard
.
program
Ruby Type: String
El primer argumento de execvp
, normalmente el nombre de archivo asociado con el archivo a ejecutar. Este valor debe especificarse si no se especificaprogram_arguments
, y viceversa.
program_arguments
Tipo de rubí: Array
El segundo argumento de execvp
. Si no se especifica program
, se debe especificar esta propiedad y se manejará como si fuera el primer argumento.
queue_directories
Ruby Type: Array
Una matriz de directorios no vacíos que, si se modifican, provocarán que se inicie un trabajo.
root_directory
Ruby Type: String
chroot
a este directorio y, a continuación, ejecute el trabajo.
run_at_load
Tipo Ruby: verdadero, falso
Inicie un trabajo una vez (en el momento de cargarlo).
sockets
Tipo Ruby: Hash
Un Hash de sockets bajo demanda que notifica a launchd cuando se debe ejecutar un trabajo.
soft_resource_limits
Tipo Rubí: Array
Un Hash de límites de recursos que se impondrán en un trabajo.
standard_error_path
Ruby Type: String
El archivo al que se envía el error estándar (stderr
).
standard_in_path
Ruby Type: String
El archivo al que se envía la entrada estándar (stdin
).
standard_out_path
Tipo Ruby: Cadena
El archivo al que se envía la salida estándar (stdout
).
start_calendar_interval
Tipo Ruby: Hash
Un Hash (similar a crontab
) que define la frecuencia de calendario en la que se inicia un trabajo. Por ejemplo:{ Minute => "0", Hour => "20", Day => "*", Weekday => "1-5", Month => "*" }
ejecutará un trabajo a las 8: 00 PM todos los días, de lunes a viernes, todos los meses del año.
start_interval
Tipo Rubí: Entero
La frecuencia (en segundos) a la que se inicia un trabajo.
start_on_mount
Tipo Ruby: verdadero, falso
Iniciar un trabajo cada vez que se monta un sistema de archivos.
throttle_interval
Tipo de Ruby: Entero / Valor predeterminado:10
La frecuencia (en segundos) a la que se permiten generar los trabajos.
time_out
Ruby Type: Integer
La cantidad de tiempo (en segundos) que un trabajo puede estar inactivo antes de que se agote el tiempo. Si no se especifica ningún valor, se utilizará el valor de tiempo de espera predeterminado para launchd.
umask
Tipo Ruby: Entero
Un valor decimal para pasar a umask
antes de ejecutar un trabajo.
username
Tipo Rubí: String
Cuando launchd se ejecuta como usuario root, el usuario con el que se ejecuta el trabajo.
wait_for_debugger
Tipo Ruby: verdadero, falso
Especifique si launchd tiene un trabajo esperar a que se adjunte un depurador antes de ejecutar el código.
watch_paths
Ruby Type: Array
Una matriz de rutas que, si se modifican, provocarán que se inicie un trabajo.
working_directory
Ruby Type: String
chdir
a este directorio y, a continuación, ejecute el trabajo.
Funcionalidad de recursos comunes
Los recursos de Chef incluyen propiedades comunes, notificaciones y guardias de recursos.
Propiedades comunes
Las siguientes propiedades son comunes a todos los recursos:
compile_time
Tipo de Ruby: verdadero, falso / Valor predeterminado: false
Controle la fase durante la cual se ejecuta el recurso en el nodo. Se establece en true para ejecutarse mientras se construye la colección de recursos (compile phase
). Establezca el valor false para ejecutarse mientras Chef Infra Client está configurando el nodo (converge phase
).
ignore_failure
Tipo de Ruby: verdadero, falso,: silencioso | Valor predeterminado: false
Continúe ejecutando una receta si un recurso falla por cualquier motivo. :quiet
no mostrará el seguimiento completo de la pila y la receta continuará ejecutándose si un recurso falla.
retries
Tipo Ruby: Entero / Valor predeterminado: 0
El número de intentos de capturar excepciones y volver a intentar el recurso.
retry_delay
Tipo Ruby: Entero / Valor predeterminado: 2
El retardo de reintento (en segundos).
sensitive
Tipo de Ruby: verdadero, falso | Valor predeterminado: false
Asegúrese de que Chef InfraClient no registra los datos confidenciales de los recursos.
Notificaciones
notifies
Tipo de Ruby: Símbolo, ‘ Chef::Recurso ‘
Un recurso puede notificar a otro recurso para que actúe cuando su estado cambie. Especifique un 'resource'
, el :action
que el recurso debe tomar y, a continuación, el :timer
para esa acción. Un recurso puede notificar más de un recurso; utilice una instrucción notifies
para notificar cada recurso.
Si el recurso referenciado no existe, se produce un error raised.In contrast, subscribes
no fallará si no se encuentra el sourceresource.
Un temporizador especifica el punto durante la ejecución de un cliente Chef Infra en el que se ejecuta la notificación. Los siguientes temporizadores están disponibles:
:before
Especifica que la acción en un recurso notificado debe ejecutarse antes de procesar el bloque de recursos en el que se encuentra la notificación.
:delayed
Predeterminado. Especifica que una notificación debe ponerse en cola y luego ejecutarse al final de la ejecución de un cliente de infraestructura de Chef.
:immediate
,:immediately
Especifica que una notificación se debe ejecutar inmediatamente, se debe notificar a perresource.
La sintaxis de notifies
es:
notifies :action, 'resource', :timer
subscribes
Ruby Tipo: Símbolo ‘Chef::Recurso ‘
Un recurso puede escuchar a otro recurso y, a continuación, actuar si cambia el estado del recurso que se está escuchando. Especifique un'resource'
, el :action
que se tomará y, a continuación, el :timer
para esta acción.
Tenga en cuenta que subscribes
no aplica la acción especificada a la fuente a la que escucha , por ejemplo:
file '/etc/nginx/ssl/example.crt' do mode '0600' owner 'root'endservice 'nginx' do subscribes :reload, 'file', :immediatelyend
En este caso, la propiedad subscribes
recarga el servicio nginx
cuando se actualiza su archivo de certificado, ubicado en/etc/nginx/ssl/example.crt
. subscribes
no realiza ningún cambio en el archivo de certificado en sí, simplemente escucha un cambio en el archivo y ejecuta la acción :reload
para su recurso (en este ejemplo nginx
) cuando se detecta un cambio.
Si el otro recurso no existe, la suscripción no generará un error. Contrasta esto con la semántica más estricta de notifies
, que generará un error si el otro recurso no existe.
Un temporizador especifica el punto durante la ejecución de un cliente Chef Infra en el que se ejecuta la notificación. Los siguientes temporizadores están disponibles:
:before
Especifica que la acción en un recurso notificado debe ejecutarse antes de procesar el bloque de recursos en el que se encuentra la notificación.
:delayed
Predeterminado. Especifica que una notificación debe ponerse en cola y luego ejecutarse al final de la ejecución de un cliente de infraestructura de Chef.
:immediate
,:immediately
Especifica que una notificación se debe ejecutar inmediatamente, se debe notificar a perresource.
La sintaxis de subscribes
es:
subscribes :action, 'resource', :timer
Guards
Se puede utilizar una propiedad de guard para evaluar el estado de un nodo durante la fase de ejecución de una ejecución de cliente Infra de Chef. En función de los resultados de esta evaluación, se utiliza una propiedad de guardia para indicar al cliente Chef Infra si debe continuar ejecutando un recurso. Una propiedad guard acepta un valor de cadena eithera o un valor de bloque Ruby:
- Una cadena se ejecuta como una orden de shell. Si el comando devuelve
0
, se aplica el protector. Si el comando devuelve cualquier otro valor, la propiedad guard no se aplica. Los protectores de cadenas de apowershell_script ejecutan comandos de Windows PowerShell y pueden devolvertrue
además de0
. - Un bloque se ejecuta como código Ruby que debe devolver
true
ofalse
. Si el bloque devuelvetrue
, se aplica la propiedad guard.Si el bloque devuelvefalse
, la propiedad guard no se aplica.
Una propiedad guard es útil para garantizar que un recurso es idempotente al permitir que ese recurso pruebe el estado deseado tal y como se está ejecutando, y luego, si el estado deseado está presente, que Chef InfraClient no haga nada.
Propiedades
Las siguientes propiedades se pueden usar para definir un guardia que se evalúa durante la fase de ejecución de una ejecución de cliente de infraestructura de Chef:
not_if
Evitar que un recurso se ejecute cuando la condición devuelve true
.
only_if
Permite que un recurso se ejecute solo si la condición devuelve true
.
Ejemplos
Los siguientes ejemplos muestran varios enfoques para usar el recurso launchd en recetas:
Crear un Demonio de lanzamiento a partir de un archivo de libro de cocina