【发布时间】:2017-01-15 13:30:37
【问题描述】:
我正在尝试使用以下代码通过 ansible 创建:
– name: Create EC2 Instance(s)
ec2:
region: “{{ vpc_region }}”
instance_profile_name: “{{ instance_profile_name }}”
group: “{{ ec2_security_group_name }}”
keypair: “{{ ec2_key_name }}”
…..
它仍然总是输出以下内容:
TASK [扫描仪:创建 EC2 实例] ************************************ ****
致命:[127.0.0.1]:失败! => {“changed”:false,“failed”:true,“msg”:“实例创建失败 => InvalidParameterValue:参数 iamInstanceProfile.name 的值(my-role-for-ansible)无效。 IAM 实例配置文件名称无效”}
虽然我认为我在 AWS 中为我的用户定义了正确的策略,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt14844231360000",
"Effect": "Allow",
"Action": [
"iam:PassRole"
],
"Resource": [
"arn:aws:iam::11111111:role/my-role-for-ansible"
]
}
]
}
上面有什么问题吗?
【问题讨论】:
-
您的剧本是否在尝试启动实例之前立即创建了 IAM 角色?在这种情况下,您可能会陷入这种情况:“创建 IAM 角色后,权限可能需要几秒钟才能传播。如果您第一次尝试启动具有角色的实例失败,请等待几秒钟,然后再试一次。”
-
是的,我等了它,但它没有帮助,这仍然失败。
-
IAM 实例配置文件名称与 IAM 角色略有不同。您将使用
aws ec2 create-instance-profile创建实例配置文件,然后将您的角色(具有必要的 IAM 权限)添加到该实例配置文件。那里的InvalidParameterValue错误通常表示a)命名的实例配置文件不存在,或者b)它存在,但不能假定配置文件指向的 IAM 角色。 -
确实,这有助于通过替换实例配置文件而不是解决问题的角色
-
@Castaglia,奇怪的是我多年来一直在使用实例配置文件,现在却出现了这个错误:实例创建失败 => InvalidParameterValue: Value (arn:aws:iam::**** *:instance-profile/ansible-demo-role) 的参数 iamInstanceProfile.name 无效。许多人也抱怨比赛条件,但在我的情况下,我已经有了 3 天的配置文件,这只是在我升级我的 boto 版本以支持不同的 ansible 模块 github.com/hashicorp/terraform/issues/ 之后发生的。 15341.
标签: amazon-ec2 ansible