2016-04-01 144 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": [ 
     "*" 
    ] 
} 

这样做让我承担该角色,并建立我所需要的。