cfn-hup
Descripción
El script auxiliar cfn-hup es un daemon que detecta cambios en los metadatos de recursos y ejecuta acciones especificadas por el usuario cuando se detecta un cambio. Esto le permite llevar a cabo actualizaciones de la configuración en las instancias de Amazon EC2 que se están ejecutando a través de la acción de la API UpdateStack
.
Sintaxis
cfn-hup --config|-c config.dir \ --no-daemon \ --verbose|-v
Opciones
Nombre | Descripción | Obligatorio |
---|---|---|
|
Especifica la ruta que el script cfn-hup busca para los directorios |
No |
|
Especifique esta opción para ejecutar el script cfn-hup una vez y salir. |
No |
|
Especifique esta opción para utilizar el modo detallado. |
No |
Archivo de configuración cfn-hup.conf
El archivo cfn-hup.conf almacena el nombre de la pila y las credenciales de AWS a las cuales se dirige daemon cfn-hup.
El archivo cfn-hup.conf utiliza el siguiente formato:
[main] stack=
<stack-name-or-id>
Nombre | Descripción | Obligatorio |
---|---|---|
|
Un nombre de pila o ID. Tipo: cadena |
Sí |
|
Un archivo de credencial exclusivo del propietario, en el mismo formato utilizado para las herramientas de líneas de comandos. Tipo: cadena Condición: el parámetro |
No |
|
El nombre de un rol de IAM asociado a la instancia. Tipo: cadena |
No |
|
Nombre de la región de AWS que contiene la pila. Ejemplo: us-east-2 |
No |
|
umask utilizada por el daemon cfn-hup. Este valor se puede especificar con o sin 0 inicial. En ambos casos, se interpreta como un número octal (similar al comando Tipo: número entero octal entre Valor predeterminado: |
No |
|
El intervalo usado para comprobar si hay cambios en los metadatos de recursos en cuestión de minutos. Tipo: entero Valor predeterminado: |
No |
|
Especifica si se debe utilizar el registro detallado. Tipo: Booleano Valor predeterminado: |
No |
Archivo de configuración hooks.conf
Las acciones del usuario que el daemon cfn-hup llama periódicamente se definen en el archivo de configuración hooks.conf. El archivo hooks.conf utiliza el siguiente formato:
[hookname] triggers=post.add
or
post.updateor
post.remove path=Resources.<logicalResourceId>
(.Metadataor
.PhysicalResourceId)(.<optionalMetadatapath>
) action=<arbitrary shell command>
runas=<runas user>
Cuando se ejecuta la operación, se ejecuta en una copia del entorno actual (en el que se encuentra cfn-hup), con CFN_OLD_METADATA establecido en el valor de ruta anterior y CFN_NEW_METADATA establecido en el valor actual.
El archivo de configuración de enlaces se carga solo al iniciarse el daemon de cfn-hup, de manera que nuevos enlaces requieran reiniciar el daemon. Se almacena una memoria caché de los valores de metadatos anteriores en /var/lib/cfn-hup/data/metadata_db— y se puede eliminar esta memoria caché para forzar a cfn-hup a ejecutar de nuevo todas las acciones post.add.
Nombre | Descripción | Obligatorio |
---|---|---|
|
Un nombre único para este enlace. Tipo: cadena |
Sí |
|
Una lista delimitada por comas de condiciones para detectar. Valores válidos: Ejemplo: |
Sí |
|
La ruta al objeto de los metadatos. Admite una ruta de profundidad arbitraria dentro del bloque de metadatos. Opciones de formato de ruta
|
Sí |
|
Un comando de shell arbitrario que se ejecuta como determinado. |
Sí |
|
Un usuario para ejecutar los comandos como. Cfn-hup utiliza el comando su para cambiar al usuario. |
Sí |
Directorio hooks.d
Para permitir la composición de varias aplicaciones que despliegan enlaces de notificación de cambios, cfn-hup admite un directorio denominado hooks.d que se encuentra en el directorio de configuración de enlaces. Puede colocar uno o varios archivos de configuración de enlaces adicionales en el directorio hooks.d. Los archivos de enlaces adicionales deben utilizar el mismo formato que el archivo hooks.conf.
El daemon cfn-hup analiza y carga cada archivo en este directorio. Si cualquier enlace en el directorio hooks.d tiene el mismo nombre que un enlace en hooks.conf, los enlaces se fusionarán (es decir, hooks.d sobrescribirá hooks.conf para cualquier valor especificado por ambos archivos).
Ejemplo
En el siguiente fragmento de código de plantilla, CloudFormation desencadena el archivo de enlaces cfn-auto-reloader.conf
cuando cambia el recurso AWS::CloudFormation::Init
que se asocia al recurso LaunchConfig
.
JSON
... "LaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "QBVersion": {"Ref": "paramQBVersion"}, "AWS::CloudFormation::Init" : { ... "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { "content": { "Fn::Join": [ "", [ "[cfn-auto-reloader-hook]\n", "triggers=post.update\n", "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n", "action=/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource LaunchConfig ", " --configsets wordpress_install ", " --region ", { "Ref" : "AWS::Region" }, "\n", "runas=root\n" ]]}, "mode" : "000400", "owner" : "root", "group" : "root" } ...
YAML
... LaunchConfig: Type: "AWS::AutoScaling::LaunchConfiguration" Metadata: QBVersion: !Ref paramQBVersion AWS::CloudFormation::Init: ... /etc/cfn/hooks.d/cfn-auto-reloader.conf: content: !Sub | [cfn-auto-reloader-hook] triggers=post.update path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --configsets wordpress_install --region ${AWS::Region} runas=root mode: "000400" owner: "root" group: "root" ...
Ejemplo adicional
Para ver una plantilla de ejemplo, consulte Implementación de aplicaciones en Amazon EC2.