Arranque de pilas de Windows de AWS CloudFormation - AWS CloudFormation

Arranque de pilas de Windows de AWS CloudFormation

En este tema se describe cómo arrancar una pila de Windows y solucionar problemas de creación de pila. Si va a crear sus propias imágenes de Windows para usar con CloudFormation, consulte la información en Configuración de una instancia de Windows con EC2ConfigService en la Guía de Amazon EC2 para Microsoft Windows a fin de ver las instrucciones. Debe configurar una instancia de Windows con EC2ConfigService para que trabaje con las herramientas de arranque de AWS CloudFormation.

Ejemplo de arranque de una pila de Windows

Para fines ilustrativos, examinaremos una plantilla del servidor de SharePoint con una sola instancia de AWS CloudFormation.

Puede consultar la plantilla completa en la siguiente URL:

Este ejemplo muestra cómo:

  • Cree un usuario de IAM y un grupo de seguridad para acceder a la instancia.

  • Configure archivos de inicialización: cfn-credentials, cfn-hup.conf y cfn-auto-reloader.conf.

  • Descargue e instale un paquete, como SharePoint Foundation 2010, en la instancia del servidor.

  • Use WaitCondition para garantizar que los recursos estén listos.

  • Recupere una IP para la instancia con Amazon Elastic IP (EIP).

El script auxiliar de AWS CloudFormation cfn-init se utiliza para realizar cada una de estas acciones, en función de la información del recurso AWS::CloudFormation::Init de la plantilla de Windows Single Server Sharepoint Foundation.

La sección AWS::CloudFormation::Init se denomina “SharePointFoundation” y comienza con una instrucción estándar:

"SharePointFoundation": { "Type" : "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : {

Después de esto, la sección files (archivos) de AWS::CloudFormation::Init se declara:

"files" : { "c:\\cfn\\cfn-hup.conf" : { "content" : { "Fn::Join" : ["", [ "[main]\n", "stack=", { "Ref" : "AWS::StackName" }, "\n", "region=", { "Ref" : "AWS::Region" }, "\n" ]]} }, "c:\\cfn\\hooks.d\\cfn-auto-reloader.conf" : { "content": { "Fn::Join" : ["", [ "[cfn-auto-reloader-hook]\n", "triggers=post.update\n", "path=Resources.SharePointFoundation.Metadata.AWS::CloudFormation::Init\n", "action=cfn-init.exe -v -s ", { "Ref" : "AWS::StackName" }, " -r SharePointFoundation", " --region ", { "Ref" : "AWS::Region" }, "\n" ]]} }, "C:\\SharePoint\\SharePointFoundation2010.exe" : { "source" : "http://d3adzpja92utk0.cloudfront.net/SharePointFoundation.exe" } },

Aquí se crean tres archivos, que se colocan en el directorio C:\cfn de la instancia del servidor. Son:

  • cfn-hup.conf, el archivo de configuración para cfn-hup.

  • cfn-auto-reloader.conf, el archivo de configuración para el enlace que usa cfn-hup para iniciar una actualización (mediante una llamada a cfn-init) cuando cambian los metadatos en AWS::CloudFormation::Init.

También hay un archivo descargado en el servidor: SharePointFoundation.exe. Este archivo se utiliza para instalar SharePoint en la instancia del servidor.

importante

Dado que las rutas de Windows utilizan una barra oblicua inversa (“\”), debe recordar siempre aplicar escape correctamente a todas las barras oblicuas inversas anteponiendo otra de ellas cuando haga referencia a una ruta de Windows en la plantilla de AWS CloudFormation.

La siguiente es la sección commands (comandos), donde están los comandos cmd.exe.

"commands" : { "1-extract" : { "command" : "C:\\SharePoint\\SharePointFoundation2010.exe /extract:C:\\SharePoint\\SPF2010 /quiet /log:C:\\SharePoint\\SharePointFoundation2010-extract.log" }, "2-prereq" : { "command" : "C:\\SharePoint\\SPF2010\\PrerequisiteInstaller.exe /unattended" }, "3-install" : { "command" : "C:\\SharePoint\\SPF2010\\setup.exe /config C:\\SharePoint\\SPF2010\\Files\\SetupSilent\\config.xml" }

Debido a que los comandos de la instancia se procesan en orden alfabético de nombre, cada comando va precedido de un número que indica su orden de ejecución deseada. Por lo tanto, podemos asegurarnos de que el paquete de instalación se extrae por primera vez, que se instalan todos los requisitos previos y, que, por último, se inicia la instalación de SharePoint.

A continuación, la sección Properties (Propiedades):

"Properties": { "InstanceType" : { "Ref" : "InstanceType" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "SecurityGroups" : [ {"Ref" : "SharePointFoundationSecurityGroup"} ], "KeyName" : { "Ref" : "KeyPairName" }, "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "<script>\n", "cfn-init.exe -v -s ", { "Ref" : "AWS::StackName" }, " -r SharePointFoundation", " --region ", { "Ref" : "AWS::Region" }, "\n", "cfn-signal.exe -e %ERRORLEVEL% ", { "Fn::Base64" : { "Ref" : "SharePointFoundationWaitHandle" }}, "\n", "</script>" ]]}} }

En esta sección, la propiedad UserData contiene un script cmd.exe que cfn-init ejecutará, rodeado de etiquetas <script>. Se puede usar aquí un script de Windows PowerShell en lugar rodear el script con etiquetas <powershell>. Para pilas de Windows, debe volver a codificar en base64 la URL del identificador de la condición de espera.

Aquí se hace referencia a SharePointFoundationWaitHandle, que se ejecuta con cfn-signal. El WaitConditionHandle y el WaitCondition asociado se declaran luego en la plantilla:

"SharePointFoundationWaitHandle" : { "Type" : "AWS::CloudFormation::WaitConditionHandle" }, "SharePointFoundationWaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "DependsOn" : "SharePointFoundation", "Properties" : { "Handle" : {"Ref" : "SharePointFoundationWaitHandle"}, "Timeout" : "3600" } }

Ya que ejecutar todos los pasos e instalar SharePoint podría llevar un tiempo, pero no una hora entera, la propiedad WaitCondition concede un tiempo de espera máximo de una hora (3600 segundos).

Si todo sale bien, se usa una dirección IP elástica para proporcionar acceso a la instancia de SharePoint:

"Outputs" : { "SharePointFoundationURL" : { "Value" : { "Fn::Join" : ["", ["http://", { "Ref" : "SharePointFoundationEIP" } ]] }, "Description" : "SharePoint Team Site URL. Please retrieve Administrator password of the instance and use it to access the URL" }

Una vez completada la creación de la pila, la dirección IP suministrada por EIP aparecerá en la pestaña Outputs (Salidas) de la consola de AWS CloudFormation. Sin embargo, antes de acceder a la instancia tendrá que recuperar la contraseña de administrador temporal generada automáticamente para la instancia. Para obtener más información, consulte Conexión con la instancia de Windows usando RDP en la Guía del usuario de Amazon EC2 para instancias de Windows.

Cómo administrar los servicios de Windows

Puede administrar los servicios de Windows de la misma forma que los servicios de Linux, salvo que use una clave windows en lugar de sysvinit. El siguiente ejemplo inicia el servicio cfn-hup, lo establece en automático y reinicia el servicio si cfn-init modifica los archivos de configuración c:\cfn\cfn-hup.conf o c:\cfn\hooks.d\cfn-auto-reloader.conf especificados.

"services" : { "windows" : { "cfn-hup" : { "enabled" : "true", "ensureRunning" : "true", "files" : ["c:\\cfn\\cfn-hup.conf", "c:\\cfn\\hooks.d\\cfn-auto-reloader.conf"] } } }

Puede administrar otros servicios de Windows de la misma forma, usando el nombre (no el nombre de visualización) para hacer referencia al servicio.

Cómo solucionar problemas de creación de pila

Si la pila falla durante la creación, el comportamiento predeterminado es de restauración en caso de error. Mientras que normalmente dicho comportamiento es bueno, ya que evita gastos innecesarios, dificulta la depuración de por qué falla la creación de la pila.

Para desactivar este comportamiento, seleccione Show Advanced Options (Mostrar opciones avanzadas) al crear la pila con la consola de AWS CloudFormation y, a continuación, elija el selector No junto a Rollback on failure (Restauración en caso de error). Esto le permitirá iniciar sesión en la instancia y ver el logfiles para identificar los problemas encontrados al ejecutar sus scripts de arranque.

Es importante fijarse en estos registros:

  • El registro de configuración de EC2 en C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt

  • El registro cfn-init en C:\cfn\log\cfn-init.log

Consulte estas guías de EC2 para obtener más registros: