Cómo hacer que los datos de usuario EC2 funcionen en AMI recién construido, hecho con Packer
Puedo construir imágenes AMI bien. Pero han dejado de funcionar con los datos de usuario de EC2:
Hay datos de usuario:
$ cat /tmp/user_data.sh
#!/bin/bash
touch /tmp/i_have_user_data /root/i_have_user_data
Y puedo lanzar una imagen simple de Ubuntu:
aws ec2 run-instances --instance-type m3.medium --image-id ami-eed10e86 --user-data file:///tmp/user_data.sh
Y funciona:
ubuntu@ip-10-165-90-180:~$ ls /tmp/i_have_user_data
/ tmp / i_have_user_data
Pero si construyo un AMI basado en ese, con Packer:
"builders": [
{
"type": "amazon-ebs",
"region": "us-east-1",
"source_ami": "ami-eed10e86",
"instance_type": "m3.large",
"ssh_username": "ubuntu",
"tags": {
"OS_Version": "Ubuntu",
"Release": "LTS"
}
}
],
... y ejecutarlo de la misma manera que antes, no hay nada en / tmp. Sin embargo, está claro que hay datos de usuario si ejecutaec2metadata:
ramdisk-id: unavailable
reserveration-id: unavailable
security-groups: default
user-data: #!/bin/bash
touch /tmp/i_have_user_data /root/i_have_user_data
Estoy bastante seguro de que es un problema de estado y que eliminar un archivo de estado hará que todo funcione mágicamente. O bien, hay un truco para hacer quefinal de la nube trabajo de secuencia de comandos inicial, que podría ser lo que está roto. De todos modos, aún no lo he encontrado.
Actualizar:
Lo hice funcionar convirtiendo el script de datos de usuario en un boothook:
#cloud-boothook
#!/bin/sh
echo "RUNNING USER DATA SCRIPT"
Todavía estoy buscando una explicación de por qué dejaron de funcionar. Los documentos de Cloud Init están mejorando, pero todavía hay un camino por recorrer.