2016-04-01 173 views
0

好的這是場景。Jenkins Packer AWS憑證驗證

我在AWS有一個Jenkins Slave,我附加了一個允許它創建EC2資源的角色。我通過Packer github問題列表找到了角色。這裏是role

我有我的帕克項目試圖建立在奴隸。開始構建時失敗:

[1; 31mBuild'amazon-ebs'錯誤:NoCredentialProviders:鏈中沒有有效的提供者。已過時。 對於詳細的消息看aws.Config.CredentialsChainVerboseErrors [0米

==>建立一些沒有成功完成,不得不錯誤: - >亞馬遜EBS:NoCredentialProviders:在鏈沒有有效的供應商。已過時。 對於詳細的消息看aws.Config.CredentialsChainVerboseErrors

如果我運行AWS配置和投入實際憑據這顯然作品,但我想避免這種情況。我已經證實該實例具有適當的角色。我也證實我可以通過命令行正確切換到這個角色。

我似乎缺少的是,與實例和打包器相關聯的角色指定角色:'iam_instance_profile'爲什麼會繼續失敗。

有什麼想法?

+0

您能否提供您正在使用的Packer'.json'配置文件? – Castaglia

+0

我已經把它放在這個Gist中https://gist.github.com/davidfic/dd16836a5ec406473ea29698e6b3021f –

+0

那麼你的Jenkins'packer'命令提供了通過'-var packer_profile =「foo」'命令行使用的角色選項,是嗎?或者您是否依賴默認的「打包員」值? – Castaglia

回答

1

因此,在Castaglia的很多幫助下,我能夠得到這個工作。我創建的角色似乎有些問題。我刪除了它,並使用相同的名稱和相同的策略重新創建它。之後,它工作得很好。

要注意,我相信Packer說明有錯誤。他們列出以下爲所有需要的角色:

{ 
"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" : "*" 
}] 
} 

,但我相信你需要一個更片:

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

這樣做讓我承擔該角色,並建立我所需要的。