如何使用 Ansible 在 AWS 的不同区域启动可变数量的实例

How to spin up variable number of instances in different regions in AWS using Ansible

我们将 Ansible 与 AWS 结合使用来自动配置服务器。对于如何使用ec2模块拉起服务器,我已经很清楚了,但是还有一些不清楚的地方。

我的问题有两个方面:

1) 我如何使用 ec2 启动区域 1 中的 3 台服务器和区域 2 中的 5 台服务器,等等?我是否使用 2 个单独的剧本、循环执行 ec2 任务等?基本上如果我想在多个区域以不同的数量启动服务器。

2) 一旦我完成了上面的第 1 步并在不同区域创建了不同数量的服务器,并使用 add_host 模块保存它们的 ips,我如何将这些 ips 传递给下一步剧本,这将是在单独文件中定义的多个角色?

注意:使用add_host添加的ips只能在同一个playbook中使用。

  tasks:
    - name: Launch multiple instances in multiple regions
      ec2:
         ...
         region: "{{ item.region }}"
         count: "{{ item.count }}"
         ...
         assign_public_ip: yes
      register: ec2
      with_items:
        - { region: 'us-east-1', count: 2 }
        - { region: 'us-west-1', count: 5 }

    - name: Add new instance to host group
      add_host: hostname={{ item.public_ip }} groupname=launched
      with_items: ec2.instances