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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta