使用 Ansible 提供多个 EC2 实例

Provision of multiple EC2 instances with Ansible

我正在尝试使用 Ansible 配置多台 AWS EC2 机器。我想让“availabilityZone”和“tag_name”动态化。请在下面找到任务。如果我将计数更改为 2,我应该能够 运行 相同的任务而无需任何修改来创建两个实例。

- name: Provision an instance
  ec2:
    key_name: "{{ keyPairName }}"
    instance_type: m3.medium
    image: "{{ amiId }}"
    region: us-east-1
    zone: us-east-1{{ item.0 }}
    group_id: "{{ securityGroup }}"
    vpc_subnet_id: "{{ subnet }}"
    wait: true
    count: 1
    instance_tags:
      Name: esl-master{{ item.1 }}-{{ deployenv }}
  register: ec2_master
  with_together:
    - [ 'a', 'b', 'c' ]
    - [ 1, 2, 3 ]
  when: isMaster

使用以上配置,我收到以下错误。

failed: [localhost] (item=[u'b', 2]) => {"failed": true, "item": ["b", 2], "msg": "Instance creation failed => InvalidParameterValue: Value (us-east-1b) for parameter availabilityZone is invalid. Subnet 'subnet-f22551d9' is in the availability zone us-east-1a"}
failed: [localhost] (item=[u'c', 3]) => {"failed": true, "item": ["c", 3], "msg": "Instance creation failed => InvalidParameterValue: Value (us-east-1c) for parameter availabilityZone is invalid. Subnet 'subnet-f22551d9' is in the availability zone us-east-1a"}

有没有更好的方法,因为我想利用 'Zone' 参数?

对于每次迭代,您尝试设置相同的 vpc_subnet_id: "{{ subnet }}" 并且在第二个和第三个中出现错误,因为子网 ID 已被使用。

您需要使用不同的子网 ID,例如

vpc_subnet_id: "{{ subnet }}{{ item.0 }}"