cfn-init - AWS CloudFormation

cfn-init

En una plantilla de CloudFormation, puede utilizar AWS::CloudFormation::Init en la sección Metadata de un recurso de Amazon EC2 para definir las tareas de inicialización. Para obtener más información, consulte AWS::CloudFormation::Init en la Guía del usuario de AWS CloudFormation.

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

  • Obtener y analizar metadatos de CloudFormation

  • Instalación de paquetes

  • Escribir archivos en el disco

  • Habilitar/deshabilitar e iniciar/detener servicios

El script auxiliar cfn-init se suele ejecutar a partir de los datos de usuario de una instancia de Amazon EC2 o de una plantilla de lanzamiento.

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.

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
nota

cfn-init no requiere credenciales, por lo que no tiene que usar las opciones --access-key, --secret-key, --role ni --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. Para obtener más información, consulte Permisos para los scripts auxiliares.

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, debe activar DisableRollback. A continuación, puede utilizar SSH en la consola y leer los registros en /var/log/cfn-init.log. Para obtener más información, consulte Elija cómo gestionar los errores al aprovisionar recursos en la Guía del usuario de AWS CloudFormation.

No

-h, --help

Muestra un mensaje de ayuda y sale.

No

Ejemplos

Ejemplo de Amazon Linux

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

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} - {}

También puede visitar nuestro repositorio de GitHub para descargar las plantillas de ejemplo que usan cfn-init, entre las que se incluyen las siguientes.

Para las plantillas de Windows, consulte Trabajar con plantillas de pilas de Microsoft Windows en la Guía del usuario de AWS CloudFormation.