cfn-init - AWS CloudFormation

cfn-init

Descripción

El script auxiliar cfn-init lee metadatos de plantilla de la clave AWS::CloudFormation::Init y actúa de forma acorde para:

  • Obtener y analizar metadatos de CloudFormation

  • Instalar paquetes

  • Escribir archivos en el disco

  • Habilitar/deshabilitar e iniciar/detener servicios

nota

Si utiliza cfn-init para actualizar un archivo existente, crea una copia de seguridad del archivo original en el mismo directorio con una extensión .bak. Por ejemplo, si actualiza /path/to/file_name, la acción produce dos archivos: /path/to/file_name.bak incluye el contenido original del archivo y /path/to/file_name incluye los contenidos actualizados.

Para obtener más información acerca los metadatos de la plantilla, consulte AWS::CloudFormation::Init.

nota

cfn-signal no requiere credenciales, por lo que no tiene que usar las opciones --access-key, --secret-key, --role o --credential-file. Sin embargo, si no se especifican credenciales, CloudFormation comprueba la pertenencia a la pila y limita el ámbito de la llamada a la pila al que pertenece a la instancia.

Sintaxis

cfn-init --stack|-s stack.name.or.id \ --resource|-r logical.resource.id \ --region region \ --access-key access.key \ --secret-key secret.key \ --role rolename \ --credential-file|-f credential.file \ --configsets|-c config.sets \ --url|-u service.url \ --http-proxy HTTP.proxy \ --https-proxy HTTPS.proxy \ --verbose|-v

Opciones

Nombre Descripción Obligatorio

-s, --stack

Nombre o ID de la pila.

Tipo: cadena

Valor predeterminado: Ninguno

Ejemplo: --stack { "Ref" : "AWS::StackName" },

-r, --resource

El ID de recurso lógico del recurso que contiene los metadatos.

Tipo: cadena

Ejemplo: --resource WebServerHost

--region

El punto de enlace regional de CloudFormation que se debe utilizar.

Tipo: cadena

Valor predeterminado: us-east-1

Ejemplo: --region ", { "Ref" : "AWS::Region" },

No

--access-key

Clave de acceso de AWS para una cuenta con permiso para llamar a DescribeStackResource en CloudFormation. El parámetro del archivo de credenciales sustituye a este parámetro.

Tipo: cadena

No

--secret-key

Clave de acceso secreta de AWS que corresponde a la clave de acceso de AWS especificada.

Tipo: cadena

No

--role

El nombre de un rol de IAM asociado a la instancia.

Tipo: cadena

Condición: El parámetro del archivo de credenciales sustituye a este parámetro.

No

-f, --credential-file

Un archivo que contiene una clave de acceso secreta y una clave de acceso. El parámetro del archivo de credenciales sustituye a los parámetros --role, --access-key y --secret-key.

Tipo: cadena

No

-c, --configsets

Una lista separada por comas de configsets para ejecutar (en orden).

Tipo: cadena

Valor predeterminado: default

No

-u, --url

El punto de enlace de CloudFormation que se debe usar.

Tipo: cadena

No

--http-proxy

Un proxy HTTP (no SSL). Use el siguiente formato http://user:password@host:port

Tipo: cadena

No

--https-proxy

Un proxy HTTPS. Use el siguiente formato https://user:password@host:port

Tipo: cadena

No

-v, --verbose

Resultados detallados. Esto es útil para la depuración de casos en los que se produce un error en la inicialización de cfn-init.

nota

Para depurar eventos de inicialización, debería activar DisableRollback. Para ello, puede usar la consola de CloudFormation, seleccionar Show Advanced Options (Mostrar las opciones avanzadas) y, a continuación, establecer Rollback on failure (Restauración en caso de error) como No. Después, puede usar SSH en la consola y leer los registros en /var/log/cfn-init.log.

No

-h, --help

Muestra un mensaje de ayuda y sale.

No

Ejemplo

Ejemplo de Amazon Linux

En los siguientes fragmentos, se muestra la propiedad UserData de una instancia de EC2, que ejecuta el configset InstallAndRun asociado al recurso WebServerInstance.

Para ver un ejemplo concreto de la plantilla, consulte Implementación de aplicaciones en Amazon EC2 con AWS CloudFormation.

Para incluir la última versión, agregue yum install -y aws-cfn-bootstrap a UserData.

JSON

Propiedad UserData que usa la función Fn::Join intrínseca.

{ "UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "#!/bin/bash -xe\n", "", "yum install -y aws-cfn-bootstrap", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref": "AWS::StackName" }, " --resource WebServerInstance ", " --configsets InstallAndRun ", " --region ", { "Ref": "AWS::Region" }, "\n" ] ] } } }

YAML

Propiedad UserData que usa la función Fn::Join intrínseca.

UserData: !Base64 'Fn::Join': - '' - - | #!/bin/bash -xe - '' - yum install -y aws-cfn-bootstrap - '/opt/aws/bin/cfn-init -v ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource WebServerInstance ' - ' --configsets InstallAndRun ' - ' --region ' - !Ref 'AWS::Region' - |+

JSON

Propiedad UserData que usa la función Fn::Sub intrínseca.

{ "UserData": { "Fn::Base64": { "Fn::Sub": [ "#!/bin/bash -x\n# Install the files and packages from the metadata\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}\n\n# Signal the status from cfn-init\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}\n", {} ] } } }

YAML

Propiedad UserData que usa la función Fn::Sub intrínseca.

UserData: !Base64 'Fn::Sub': - > #!/bin/bash -x # Install the files and packages from the metadata /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region} # Signal the status from cfn-init /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region} - {}