Funktionsweise von EC2-Benutzerdaten auf neu erstelltem AMI, das mit Packer erstellt wurde

Ich kann problemlos AMI-Images erstellen. Aber sie haben aufgehört, mit EC2-Benutzerdaten zu arbeiten:

Es gibt Benutzerdaten:

$ cat /tmp/user_data.sh
#!/bin/bash

touch /tmp/i_have_user_data /root/i_have_user_data

Und ich kann ein einfaches Ubuntu-Image starten:

aws ec2 run-instances --instance-type m3.medium --image-id ami-eed10e86 --user-data file:///tmp/user_data.sh

Und es funktioniert:

ubuntu@ip-10-165-90-180:~$ ls /tmp/i_have_user_data

/ tmp / i_have_user_data

Aber wenn ich mit Packer ein AMI auf der Basis dieses AMI aufbaue:

"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"
        }
    }
],

... und starte das genauso wie vorher, es ist nichts in / tmp. Es ist jedoch klar, dass Benutzerdaten vorhanden sind, wenn Sie ausgeführt werdenec2metadata:

ramdisk-id: unavailable
reserveration-id: unavailable
security-groups: default
user-data: #!/bin/bash

touch /tmp/i_have_user_data /root/i_have_user_data

Ich bin mir ziemlich sicher, dass es sich um eine staatliche Angelegenheit handelt und dass das Entfernen einer staatlichen Datei alles auf magische Weise funktionieren wird. Oder es gibt einen Trick, um das zu machenWolkenfinale Upstart-Skript funktioniert, was möglicherweise kaputt ist. Sowieso habe ich das noch nicht gefunden.

Aktualisieren:

Ich habe es geschafft, indem ich das User-Data-Skript in einen Boothook verwandelt habe:

#cloud-boothook
#!/bin/sh
echo "RUNNING USER DATA SCRIPT"

Ich suche immer noch nach einer Erklärung, warum sie aufgehört haben zu arbeiten. Die Dokumente von Cloud Init werden immer besser, aber es ist noch ein langer Weg.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage