Recurso launchd

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, y working_directory son las propiedades disponibles para este recurso.

Acciones

El recurso launchd tiene las siguientes acciones:

:createPredeterminado. Cree una lista de propiedades de launchd.:create_if_missingCree una lista de propiedades launchd, si aún no existe.:deleteEliminar una lista de propiedades de launchd. Esto descargará un demonio o agente, si está cargado.:disableDeshabilitar una lista de propiedades de launchd.:enableCree 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.:nothingEste 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.:restartReinicie un demonio o agente administrado de launchd.

Propiedades

El recurso launchd tiene las siguientes propiedades:

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

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

cookbookTipo Rubí: String

El nombre del libro de cocina en el que se encuentran los archivos de origen.

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

labelRuby Type: String

El identificador único para el trabajo.

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

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

pathRuby Type: String

La ruta al directorio. Se recomienda el uso de un camino totalmente cualificado, pero no siempre es necesario. Valor predeterminado: el namedel bloque de recursos. Consulte la sección» Sintaxis » anterior para obtener más información.

plist_hashTipo Rubí: Hash

Un Hash de pares de valores de clave utilizado para crear la lista de propiedades launchd.

session_typeRuby Type: String

El tipo de lista de lanzamiento a crear. Valores posibles: system(predeterminado) o user.

sourceRuby Type: String

La ruta de acceso a la lista de propiedades launchd.

typeTipo de Ruby: Cadena

El tipo de recurso. Valores posibles: daemon(predeterminado), agent.

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

debugTipo Rubí: true, false

Establece la máscara de registro en LOG_DEBUG para este trabajo.

disabledTipo de Ruby: verdadero, falso / Valor predeterminado:false

Insinúa a launchctl que no envíe este trabajo a launchd.

enable_globbingRuby Type: true, false

Actualizar los argumentos del programa antes de la invocación.

enable_transactionsTipo Ruby: true, false

Realizar un seguimiento de las transacciones en curso; si no hay ninguna, envíe la señal SIGKILL.

environment_variablesTipo Ruby: Hash

Variables de entorno adicionales que se deben establecer antes de ejecutar un trabajo.

exit_timeoutTipo Ruby: Entero

La cantidad de tiempo (en segundos) que launchd espera antes de enviar una señal SIGKILL.

hard_resource_limitsTipo Ruby: Hash

Un Hash de límites de recursos que se impondrán en un trabajo.

inetd_compatibilityRuby 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 accepten nombre del trabajo y,a continuación, pase los descriptores de archivo de entrada, salida y error estándar.

init_groupsRuby Type: true, false

Especifique si se llama a initgroups antes de ejecutar un trabajo.

keep_aliveTipo 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_eventsTipo 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_onceTipo Ruby: verdadero, falso

Especifique si un trabajo se puede ejecutar una sola vez. Establezca este valor en truesi un trabajo no se puede reiniciar sin un reinicio completo de la máquina.

limit_load_from_hostsTipo 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_hostsRuby Type: Array

Una matriz de hosts a la que se aplica este archivo de configuración.

limit_load_to_session_typeRuby Type: Array, String

El tipo de sesión al que se aplica este archivo de configuración.

low_priority_ioRuby 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_servicesRuby Type: Hash

Especifique los servicios que se registrarán con el subsistema de arranque.

niceTipo Ruby: Entero

El valor de prioridad de programación del programa en el rango -20 a 20.

on_demandTipo 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_typeTipo de Ruby: Cadena

El propósito previsto del trabajo: Adaptive, Background, Interactive, o Standard.

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

Una matriz de directorios no vacíos que, si se modifican, provocarán que se inicie un trabajo.

root_directoryRuby Type: String

chroot a este directorio y, a continuación, ejecute el trabajo.

run_at_loadTipo Ruby: verdadero, falso

Inicie un trabajo una vez (en el momento de cargarlo).

socketsTipo Ruby: Hash

Un Hash de sockets bajo demanda que notifica a launchd cuando se debe ejecutar un trabajo.

soft_resource_limitsTipo Rubí: Array

Un Hash de límites de recursos que se impondrán en un trabajo.

standard_error_pathRuby Type: String

El archivo al que se envía el error estándar (stderr).

standard_in_pathRuby Type: String

El archivo al que se envía la entrada estándar (stdin).

standard_out_pathTipo Ruby: Cadena

El archivo al que se envía la salida estándar (stdout).

start_calendar_intervalTipo 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_intervalTipo Rubí: Entero

La frecuencia (en segundos) a la que se inicia un trabajo.

start_on_mountTipo Ruby: verdadero, falso

Iniciar un trabajo cada vez que se monta un sistema de archivos.

throttle_intervalTipo de Ruby: Entero / Valor predeterminado:10

La frecuencia (en segundos) a la que se permiten generar los trabajos.

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

umaskTipo Ruby: Entero

Un valor decimal para pasar a umask antes de ejecutar un trabajo.

usernameTipo Rubí: String

Cuando launchd se ejecuta como usuario root, el usuario con el que se ejecuta el trabajo.

wait_for_debuggerTipo Ruby: verdadero, falso

Especifique si launchd tiene un trabajo esperar a que se adjunte un depurador antes de ejecutar el código.

watch_pathsRuby Type: Array

Una matriz de rutas que, si se modifican, provocarán que se inicie un trabajo.

working_directoryRuby 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 devolver true además de 0.
  • Un bloque se ejecuta como código Ruby que debe devolver true ofalse. Si el bloque devuelve true, se aplica la propiedad guard.Si el bloque devuelve false, 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



+