【问题标题】:Need Ansible to create new Ec2 instance Everytime每次都需要 Ansible 来创建新的 Ec2 实例
【发布时间】:2018-09-19 15:55:14
【问题描述】:

我有一个运行 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

这是我在 s3 存储桶中运行 ec2 服务器的 Ansible 代码。像 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

【问题讨论】:

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


    【解决方案1】:

    它没有创建新实例,因为 stack_name 没有更改,并且您的 CFT 仅构建一个主机(已经构建)。

    您的直接选择是:

    1. 使用CloudFormation 中的AutoScalingGroups (ASG) 创建您的实例。您可以传入最小主机数 (MinSize) 作为参数,其余的由 ASG 处理。您需要构建一些逻辑以在每次迭代时将计数加一。
    2. (不建议)每次运行 Ansible playbook 时更改堆栈名称
    3. (不建议)每次您想运行 Ansible 时都将另一个主机添加到您的 CFT

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 2018-06-25
      • 2018-09-11
      相关资源
      最近更新 更多