通过Ansible使用子网时无法创建EC2(同样通过AWS-CLI工作)

时间:2015-10-27 17:05:48

标签: amazon-ec2 ansible boto ansible-playbook

我正在尝试使用ansible创建EC2实例。如果我在没有子网(和默认安全组)的情况下尝试此操作,它将完美运行并创建EC2。但这不是我想要的。我想使用特定的' sg'来创建实例。并使用已存在的子网(由我的组织定义)。

相同的子网和' sg'使用AWS-CLI(以及通过控制台),相同的配置文件,相同的图像,相同的密钥和相同的实例类型时工作正常。它在我的子网下创建实例并分配命令中传递的sg - Perfect !!我们可以在这里排除访问/角色相关的问题(因为CLI /控制台工作正常)?如果是这样,Ansible / boto还有什么问题?

AWS CLI:

aws ec2 run-instances --image-id ami-3d401234 --count 1 --instance-type t2.large --region us-east-1 --key-name MyKeyNameHere --security-group-ids sg-766b1234 --subnet-id subnet-09871234 --profile MyProfileNameHere

这是剧本。

 - name: Provision an EC2 node
    hosts: local
    connection: local
    gather_facts: false
    tags: provisioning
    vars:
      instance_type: t2.large
      image: ami-3d401234
      group_id: sg-766b1234
      region: us-east-1
      keypair: MyKeyNameHere
      vpc_subnet_id: subnet-09871234

    tasks:
      - name: Launch new Instance
        local_action: ec2 instance_tags="Name=MyInstance"
                      instance_type={{ instance_type}}
                      image={{ image }}
                      wait=true
                      group_id={{ group_id }}
                      profile=MyProfileNameHere
                      region={{ region }}
                      vpc_subnet_id={{ vpc_subnet_id }}
                      keypair={{ keypair }}
        register: ec2

这是错误,不知道为什么再次401(在剧本中没有提到配置文件时更早得到这个)。我确信访问和密钥是正确的,因为我能够使用默认sg创建。

    vpc_id = vpc.get_all_subnets(subnet_ids=[vpc_subnet_id])[0].vpc_id
  File "/Library/Python/2.7/site-packages/boto-2.38.0-py2.7.egg/boto/vpc/__init__.py", line 1153, in get_all_subnets
    return self.get_list('DescribeSubnets', params, [('item', Subnet)])
  File "/Library/Python/2.7/site-packages/boto-2.38.0-py2.7.egg/boto/connection.py", line 1186, in get_list
    raise self.ResponseError(response.status, response.reason, body)
boto.exception.EC2ResponseError: EC2ResponseError: 401 Unauthorized
<?xml version="1.0" encoding="UTF-8"?>
<Response><Errors><Error><Code>AuthFailure</Code><Message>AWS was not able to validate the provided access credentials</Message></Error></Errors><RequestID>6182f17d-f62e-4d57-b351-3498dc8a53b7</RequestID></Response>

我在〜/ .boto文件中有访问密钥和密钥信息。只是aws_access_key_id和aws_secret_access_key。没有IAM角色信息等。

1 个答案:

答案 0 :(得分:1)

boto,aws_security_token中缺少这个。从来没有想过这将是必要的,因为我已经通过了访问和密钥。我想这是必要的,因为我被授予组织组的访问权限?我添加了这个,它现在有效。谢谢@helloV让我再次与你评论差异评论: - )