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
.
Temas
Sintaxis
cfn-hup --config|-c config.dir \ --no-daemon \ --verbose|-v
Opciones
Nombre | Descripción | Obligatorio |
---|---|---|
|
Especifica la ruta que el script |
No |
|
Especifique esta opción para ejecutar el script |
No |
|
Especifique esta opción para utilizar el modo detallado. |
No |
Archivo de configuración cfn-hup.conf
En el archivo cfn-hup.conf
se almacena el nombre de la pila y las credenciales de AWS a las cuales se dirige el daemon cfn-hup
.
El archivo cfn-hup.conf
usa el formato siguiente:
[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 |
|
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 de la hooks.conf
Las acciones del usuario a las que el daemon cfn-hup
llama periódicamente se definen en el archivo de configuración hooks.conf
. El archivo hooks.conf
usa el formato siguiente:
[hookname]
triggers=post.add or
post.update or
post.remove
path=Resources.<logicalResourceId>
(.Metadata or
.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 metadatos anterior especificado por ruta y CFN_NEW_METADATA
establecido en el valor actual.
El archivo de configuración de enlaces se carga solo al iniciarse el daemon cfn-hup
, de manera que los nuevos enlaces necesitarán que se reinicie el daemon. Se almacena una memoria caché de los valores de metadatos anteriores en /var/lib/cfn-hup/data/metadata_db
, pero puede eliminarla para forzar cfn-hup
y que se ejecuten 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í |
|
Usuario con el que ejecutar los comandos. |
Sí |
Directorio hooks.d
Para permitir la composición de varias aplicaciones que implementan 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 meter 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 algún enlace del directorio hooks.d
tiene el mismo nombre que un enlace de hooks.conf
, los enlaces se fusionarán (es decir, hooks.d
sobrescribirá a hooks.conf
para cualquier valor que se especifique en ambos archivos).
Ejemplos
En el siguiente ejemplo, CloudFormation desencadena el archivo de enlaces cfn-auto-reloader.conf
cuando cambia el recurso AWS::CloudFormation::Init
que está asociado 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"
...
Recursos relacionados
Para ver una plantilla de ejemplo, consulte Implementación de aplicaciones en Amazon EC2 con CloudFormation en la Guía del usuario de AWS CloudFormation.