2011-10-06 20 views
7

Parece que el proceso de arranque de stock es un poco deficiente en Windows.¿Cuál es el equivalente de Cloud-Init para Windows?

Linux tiene cloud-init que instalará paquetes, almacenará archivos y ejecutará un script bash a partir de los datos del usuario.

Windows tiene ec2config pero actualmente no hay soporte para ejecutar un script cmd o powershell cuando el sistema está "listo", lo que significa que todos los reinicios iniciales se han completado.

Parece que hay opciones de terceros. Por ejemplo RightScale tiene el agente RightLink que realiza esta función.

¿Hay opciones de código abierto disponibles? ¿Hay algún plan para agregar esta característica a Ec2Config? ¿Tengo que construir esto por mi cuenta?

¿Echo de menos algo?

Respuesta

14

Parece que EC2Config en el proporcionado por Amazon AMI ahora soporta "Scripts" datos de usuario como de the 11-April-2012 updates.

La documentación aún no se ha actualizado, por lo que es difícil saber si es compatible con PowerShell o solo scripts cmd.exe. Tengo posted a question on the AWS forums para tratar de obtener más detalles, y actualizaré aquí cuando sepa más.

ACTUALIZACIÓN: Parece que se admite la sintaxis por lotes cmd.exe, que a su vez puede invocar a PowerShell. Hay una nueva versión de la documentación EC2Config incluida en AMI. Citando de ella:

[EC2Config] leerá en los datos de usuario especificado para la instancia y luego comprobar si contiene las etiquetas <script> y </script>. Si encuentra ambos, tomará la información entre esas dos etiquetas y la guardará en un archivo por lotes ubicado en la carpeta Configuración de esta aplicación. A continuación, ejecutará el archivo por lotes durante el inicio de una instancia.

El archivo por lotes solo se creará y ejecutará en el primer lanzamiento de una instancia después de una sysprep. Si desea que el archivo por lotes se cree y ejecute de nuevo, establezca el estado del complemento Ec2HandleUserdata en Habilitado.

ACTUALIZACIÓN 2: Mi interpretaciónis confirmed por Shon from the AWS Team

Actualización 3: Y a partir del mayo-2012 Amis, PowerShell se admite el uso de la etiqueta <powershell/>.

+0

Si el OP está escuchando, creo que en este momento esta respuesta debe marcarse como la respuesta aceptada. – blong

+1

@blong - acordado –

0

Tuvimos que construirlo nosotros mismos; lo hicimos con un servicio personalizado y construimos nuestras propias AMI. No hay ninguna disposición actualmente dentro de EC2Config para hacerlo.

Aún mejor, no hay una manera fácil de determinar cuándo la instancia está "lista". Tuvimos que hacerlo siguiendo el archivo de registro de EC2Config.

+0

¿Qué hay de simplemente dejar caer Ec2Config y orquestar el proceso de arranque con un servicio de encargo? No es como Ec2Config hace tanto. –

+0

Derecha. No necesita Ec2Config; no lo "utilizamos" en absoluto para nuestro arranque, EXCEPTO: la única forma en que creemos que podemos saber de manera concluyente que la instancia está verdaderamente lista es buscar el "Windows está listo para usar" en el archivo Ec2ConfigLog.txt. Es un problema enloquecedor si realmente quiere saber cuándo la instancia está configurada y reiniciando. – Joe

+1

He decidido seguir esta ruta. Ec2Config automatiza algunas tareas de inicio. No tiene sentido reinventar la rueda. Por ejemplo formatear volúmenes efímeros y cambiar el nombre de la máquina, si es necesario. Esperemos que una versión futura de Ec2Config agregue un gancho de evento "listo" para simplificar este proceso. –

2

Tuve que construir uno yo mismo, pero fue muy fácil. Acabo de hacer un servicio que lee los datos del usuario cuando se inicia y ejecuta el archivo como un script de powershell.

Para evitar el problema de no saber cuándo comenzar el servicio, acabo de hacer que el tipo de inicio del servicio sea "retrasado automático" y eso pareció solucionar el problema. Dependiendo de lo que necesite hacer para el sistema que puede o no funcionar para usted, en mi caso eso fue todo lo que tuve que hacer.

1

Agregué un nuevo proyecto codeplex que ya tiene esta herramienta creada para Windows. Espero recibir algunos comentarios.

http://cloudinitnet.codeplex.com/

+0

He estado usando esto, reportando problemas, etc. - esta es una * gran * herramienta. –

+0

Me gustaría hacer la transición a esta herramienta, especialmente para proyectos personales. Se ve muy interesante. –

+0

Si tiene alguna pregunta, puede ponerse en contacto conmigo en este sitio (creo) o en el sitio codeplex y estaré más que dispuesto a ayudarlo si tiene alguna pregunta. – bwight

0

Recientemente he encontrado nssm (en nssm.cc) que fácilmente envuelve un archivo por lotes simple (o casi cualquier otra cosa) como un servicio. Luego puede usar sc config servic1 depend = service0 para forzar que el archivo por lotes se ejecute en un punto particular de la secuencia de inicialización del servicio. Lo estoy usando entre ex2config y sql express para crear una carpeta en d, por ejemplo. Tendrá que usar la herramienta de servicios para que se ejecute como servicios de red y cambie la propiedad AppExit para Ignorar usando regedit, pero funciona una vez que lo tenga todo en su lugar.

Cuestiones relacionadas