每次都需要Ansible创建新的Ec2实例

时间:2018-09-19 15:55:14

标签: amazon-web-services amazon-ec2 ansible

我有一个运行Cloudformation脚本的Ansible脚本。问题是,ansible脚本应该反复运行指定的时间才能在AWS上创建无限数量的服务器,就像在AWS上运行Cloudformation createstack一样,但是运行不止一次时,它会不断更新创建的相同资源。它只是更改名称。我已经努力修复了2天。无论运行ansible脚本多少次,我都需要一种在AWS中创建新服务器的方法。我相信问题是实例ID。因为看到一个已创建,所以它不会尝试创建一个新的。这是我上传到s3的Cloudformation代码。

Parameters:
  KeyPair:
    Type: AWS::EC2::KeyPair::KeyName
    Description: Connects to this
Resources:
  ec2:
    Type: AWS::EC2::Instance
    Properties:
  ImageId: ami-04681a1dbd79675a5
  InstanceType: t2.micro
  KeyName: !Ref KeyPair

这是我的Ansible代码,用于在s3存储桶中运行ec2服务器。像ansible-playbook Provision.yml一样奔跑

请帮助。

- hosts: localhost
  tasks:
    - name: first Task Provision ec2
      cloudformation:
        stack_name: 'provisiong-ec2'
        state: present
        region: us-east-1
        disable_rollback: true
        template_url: https://s3.amazonaws.com/randombuckets/ansy2-cloudformation.template
        template_parameters:
          KeyPair: rabbit

1 个答案:

答案 0 :(得分:0)

由于stack_name尚未更改,并且您的CFT仅构建一台主机(已构建),因此没有创建新实例。

您的直接选择是:

  1. 使用AutoScalingGroups中的CloudFormation(ASG)创建实例。您可以传入最少数量的主机(MinSize)作为参数,ASG将负责其余的工作。您需要建立一些逻辑,以便每次迭代将计数增加一。
  2. (不建议使用)每次运行Ansible剧本时都要更改堆栈名称
  3. (不建议使用)每次运行Ansible时将另一台主机添加到CFT中。