如何使用 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
我们将 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