Ansible,EC2和实例配置文件

时间:2017-01-15 13:30:38

标签: amazon-ec2 ansible

我正在尝试使用以下代码通过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 }}”
  …..

仍然总是输出以下内容:

  

任务[扫描仪:创建EC2实例] ************************************ ****
  致命:[127.0.0.1]:失败! => {“已更改”: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"
            ]
        }
    ]
}

以上是否有问题?

3 个答案:

答案 0 :(得分:1)

在我的情况下,Packer抛出此错误,这是因为不存在匹配角色。

一次AWS文档实际上是有帮助的:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html

答案 1 :(得分:0)

之所以会这样,是因为您必须创建一个额外的IAM角色,一个实例配置文件。

您可以在启动时将IAM实例配置文件附加到Amazon EC2实例,也可以将其附加到先前启动的实例。有关更多信息,请参见Instance Profiles

我通过遵循the console instructions section of these AWS docs.

解决了此问题

关键部分是上述说明的第9步(上面已链接):

  

在“创建角色”页面上,选择AWS服务,然后从选择   将使用此角色列表的服务,请选择EC2。

一旦您将角色与特定的服务类型(在我的情况下为EC2)相关联,便一切正常。

答案 2 :(得分:0)

  RootInstanceProfile:
    Type: 'AWS::IAM::InstanceProfile'
    Properties:
      Path: /
      Roles:
        - !Ref RootRole  

  RootRole:
    Type: 'AWS::IAM::Role'

ec2:

IamInstanceProfile: !Ref RootInstanceProfile

如果您使用 cloudformation 创建所有内容,则需要一个角色,但您不能直接引用该角色。您必须创建一个引用角色的实例配置文件。然后在 ec2 属性中,您可以在 IamInstanceProfile 属性中引用实例配置文件。