east - Amazon ec2 user-data, ¿cómo funciona?
download key pair amazon ec2 (4)
AWS userdata es el conjunto de comandos / datos que puede proporcionar a una instancia en el momento del lanzamiento. Por ejemplo, si está lanzando una instancia de ec2 y desea tener instalado Docker en el ec2 recién lanzado, entonces puede proporcionar el conjunto de comandos de bash en el campo de datos de usuario de la página de configuración de aws ec2.
Uso
Implementaciones automatizadas
Orquestación de la instancia recién lanzada
AWS de ajuste de escala automático
Here es un ejemplo bien explicado de datos de usuario AWS con video tutorial
Estamos iniciando instancias y accediendo a los datos del usuario que colocamos. Pero, ¿alguien entiende los aspectos internos de esta operación (desde el lado de Amazon)? Cuando pasamos los datos de usuario, ¿en qué punto se transmiten esos datos a la máquina virtual (esta es una función Xen) y dónde se almacenan?
Primero pensé que estaba configurado como el env de USER_DATA, pero también podemos pasarlo como un archivo. ¿Dónde está ese archivo almacenado? ¿Es genérico para todas las instancias o varía según AMI?
Esto no es un problema per se, solo quería saber cómo Amazon hace esto.
Captura de pantalla de datos del usuario: http://d.pr/GZlY
Los datos de usuario están disponibles para la instancia con una solicitud HTTP simple en esta URL:
http://169.254.169.254/latest/user-data
Amazon EC2 no pone estos datos de usuario en la instancia directamente, aunque muchas AMI tienen un código que ordena a la instancia que descargue y procese los datos de usuario automáticamente.
Ver también:
Perdón por publicar una pregunta tan antigua, pero este parece ser el mejor lugar para poner esta información adicional.
La mayoría de todos los documentos de AWS describen los Datos del usuario como una propiedad en la que se pueden colocar las secuencias de comandos de inicio del ciclo de vida de la instancia, es decir, las cosas que desea ejecutar solo cuando la instancia se inicia por primera vez.
Este suele ser el caso, pero ha habido al menos otra persona además de mí que desea realizar secuencias de comandos diferentes en el reinicio, por ejemplo, para arreglar una llave rota o algo así. Y adivina qué ... puedes hacerlo usando Datos de usuario.
Aquí está el código y el enlace al documento de AWS ...
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
/bin/echo "Hello World." >> /tmp/sdksdfjsdlf
--//
No puedo encontrar documentación sobre este formato de Datos de usuario que permita que esto suceda. Lo probé y funciona. He intentado ver si se ejecuta en cada inicio, y lo hace.
Entonces, si crees que necesitas hacer esto, te recomiendo que hagas una copia de seguridad. Asegúrese de tener una copia de los Datos de usuario originales, y use el código provisto modificado para su suite, y elimine el código la próxima vez que detenga la instancia (para evitar múltiples ejecuciones de la secuencia de comandos).
Un ejemplo fácil para la comprensión de todos: si desea crear el archivo /tmp/testfile.txt
cuando se inicia la máquina, simplemente puede agregar estas dos líneas en el campo User data
.
#!/bin/bash
touch /tmp/testfile.txt
Recuerde poner el #!/bin/bash
en la parte superior antes de sus comandos.
Cuando ejecuta la instancia (Linux AMI), puede ver el contenido del campo de User data
en /var/lib/cloud/instance/user-data.txt