2016-03-30 7 views
2

Ich baue derzeit AMIs über Packer ohne Probleme, aber ich backe die AWS-Anmeldeinformationen in meine Skripts, was nicht das ist, was ich möchte. Wenn Sie in der Packer-Dokumentation lesen, dass keine Anmeldeinformationen gefunden werden, kann eine AWS-Rolle verwendet werden.Verwendung von AWS-Rollen mit Packer zum Erstellen von AMIs

Ich habe die Richtlinie und die Rolle erstellt, aber es ist mir unklar, wie Packer diese Rolle zu verwenden. Muss ich den ARN als Variable übergeben?

Irgendwelche Gedanken?

+0

https://www.packer.io/docs/builders/amazon.html Haben Sie das versucht? –

+0

Ich habe diese Seite gelesen, möchte aber keine AWS-Anmeldeinformationen angeben. Ich möchte nur die Rolle benutzen. Ich habe festgestellt, dass Sie iam_instance_profile dem Packer übergeben und auf die von mir erstellte Rolle einstellen können. Das funktioniert gut in der Befehlszeile, aber ich versuche das in Jenkins zu tun und ich habe nicht herausgefunden, wie man sie schön spielen lässt. Die Packer-Dokumente sind nicht klar in der Verwendung von iam_instance_profile. Ich musste durch Github graben, um das zu finden. –

Antwort

2

Rollen gelten nur für Instanzen, die unter AWS ausgeführt werden, und Rollen können nur angewendet werden, wenn Sie eine Instanz erstellen (obwohl Sie die dieser Rolle später zugewiesenen Berechtigungen ändern können).

Also in diesem Fall, wenn Sie Rollen für AMI Erstellung verwenden möchten, müssen Sie ...

  1. eine Rolle mit Berechtigungen erstellen (dh der detaillierten diejenigen in den Link Kusch zur Verfügung gestellt) zu erstellen AMIs
  2. eine Instanz mit dieser
  3. Rolle erstellen
  4. Packer auf diese Instanz installieren

diese Instanz verwenden, dann Sie w AMI erstellen ohne Angabe von Anmeldeinformationen.

+0

Referenz IAM Rolle: https://www.packer.io/docs/builders/amazon.html#using-an-iam-task-or-instance-role –

-1

Wenn Sie die IAM Rolle festlegen möchten, die Packer von der Kommandozeile während AMI Erstellung verwendet (zum Beispiel von Jenkins), dann können Sie Variablen verwenden, um so zu tun, z.B. mit dem folgenden in Ihrem Packer Skript:

"variables": { 
    "packer_profile": "packer", 
    ... 
}, 
"builders": [ 
    { 
    "type": "amazon-ebs", 
    ... 
    "iam_instance_profile": "{{user `packer_role`}}", 
    ... 
    } 
], 
"provisioners": [ 
    ... 
] 

So bieten wir eine Standard "Packer" Wert für unsere packer_profile Variable. Dann, wenn Packer von der Kommandozeile in Jenkins Aufruf, überschreiben Sie diesen Standardvariablenwert mit:

$ /path/to/packer -var packer_profile="MyNewProfileHere" ... 

hoffte, das hilft!

Verwandte Themen