2016-04-01 8 views
0

OK Hier ist das Szenario.Jenkins Packer AWS Anmeldeinformationen Validierung

Ich habe einen Jenkins-Slave in AWS und ich habe daran eine Rolle angehängt, die es ermöglicht, EC2-Ressourcen zu erstellen. Ich habe die Rolle über die Packer GitHub-Liste gefunden. Hier ist die role

Ich habe mein Packer-Projekt versucht, auf dem Slave aufzubauen. Wenn der Build startet, schlägt er fehl mit:

[1; 31mBuild 'amazon-ebs' fehlerhaft: NoCredentialProviders: keine gültigen Anbieter in der Kette. Veraltet Für ausführliches Messaging sehen aws.Config.CredentialsChainVerboseErrors [0m

==> Einige baut nicht erfolgreich abgeschlossen und Fehler hatten: -> amazon-ebs: NoCredentialProviders: keine gültigen Anbieter in der Kette. Veraltet Für ausführliches Messaging sehen aws.Config.CredentialsChainVerboseErrors

Wenn ich laufe aws und dies offensichtlich arbeitet in Echtanmeldeinformationen setzen konfigurieren, aber ich versuche, das zu vermeiden. Ich habe überprüft, dass die Instanz die richtige Rolle hat. Ich habe auch überprüft, dass ich über die Kommandozeile richtig in diese Rolle wechseln kann.

Was ich vermisse, ist, dass mit der Rolle, die mit der Instanz und dem Packer verbunden ist, die Rolle mit: 'iam_instance_profile' angibt, warum dies weiterhin fehlschlägt.

Irgendwelche Gedanken?

+0

Können Sie die Packer '.json' Konfigurationsdatei angeben, die Sie verwenden? – Castaglia

+0

Ich habe es in diesem Gist https://gist.github.com/davidfic/dd16836a5ec406473ea29698e6b3021f –

+0

So also Ihre Jenkins 'Packer' Befehl bietet die Rolle über' -var packer_profile = "foo" 'Kommandozeile Optionen, ja? Oder verlassen Sie sich auf den Standardwert "Packer"? – Castaglia

Antwort

1

Also nach viel Hilfe von Castaglia konnte ich das zur Arbeit bringen. Mit der von mir geschaffenen Rolle schien etwas nicht in Ordnung zu sein. Ich habe es gelöscht und es mit dem gleichen Namen und der gleichen Richtlinie neu erstellt. Danach hat es gut funktioniert.

Zu beachten, ich glaube, die Packer-Anweisungen haben einen Fehler. Sie führen die folgenden als alles, was für die Rolle benötigt wird:

{ 
"Statement": [{ 
    "Effect": "Allow", 
    "Action" : [ 
    "ec2:AttachVolume", 
    "ec2:CreateVolume", 
    "ec2:DeleteVolume", 
    "ec2:CreateKeypair", 
    "ec2:DeleteKeypair", 
    "ec2:DescribeSubnets", 
    "ec2:CreateSecurityGroup", 
    "ec2:DeleteSecurityGroup", 
    "ec2:AuthorizeSecurityGroupIngress", 
    "ec2:CreateImage", 
    "ec2:CopyImage", 
    "ec2:RunInstances", 
    "ec2:TerminateInstances", 
    "ec2:StopInstances", 
    "ec2:DescribeVolumes", 
    "ec2:DetachVolume", 
    "ec2:DescribeInstances", 
    "ec2:CreateSnapshot", 
    "ec2:DeleteSnapshot", 
    "ec2:DescribeSnapshots", 
    "ec2:DescribeImages", 
    "ec2:RegisterImage", 
    "ec2:CreateTags", 
    "ec2:ModifyImageAttribute" 
    ], 
    "Resource" : "*" 
}] 
} 

Aber ich glaube, Sie brauchen noch ein Stück:

{ 
    "Sid": "PackerIAMPassRole", 
    "Effect": "Allow", 
    "Action": "iam:PassRole", 
    "Resource": [ 
     "*" 
    ] 
} 

Dadurch konnte ich die Rolle zu übernehmen und zu bauen, was ich brauchte.

Verwandte Themen