我使用 exact_count 标记为2创建2个Windows aws 计算机。
它创建具有相同名称的2台AWS机器。
例如:
1)itg-Web-windows
2)itg-web-windows
我想将机器名称创建为 instance_tags :
1)itg-windows-web-1
2)ITG-Windows的Web-2
以下是我的代码:
name: ensure instances are running
ec2:
region: "{{ region }}"
image: "{{ image_id }}"
group_id: sg-1234
vpc_subnet_id: subnet-5678
instance_tags:
Name: "itg-windows-web"
exact_count: 2
count_tag:
Name: "itg-windows-web"`
register: ec2_result
答案 0 :(得分:2)
这将创建名称为web_server_1,web_server_3和web_server_5的服务器:
- name: create instances
ec2:
- image: <your_ami>
instance_type: t2.micro
key_name: <your_ssh_key>
region: us-east-1
vpc_subnet_id: <your_subnet_id>
count_tag:
Name: "web_server_{{ item }}"
exact_count: 1
instance_tags:
Name: "web_server_{{ item }}"
with_items: ['1', '3', '5']
答案 1 :(得分:1)
使用以下ansible模板:
---
- name: A sample template
hosts: local
connection: local
gather_facts: False
tasks:
- name: create instance
ec2:
keypair: test-ssh-key
instance_type: t2.micro
image: ami-abcd1234
wait: yes
instance_tags:
ec2type: web
exact_count: "{{ count }}"
count_tag:
ec2type: web
region: us-east-1
vpc_subnet_id: subnet-1234abcd
register: ec2
- name: generate sequence id for tagging
debug: msg="{{ item }}"
no_log: true
with_sequence: start="{{ startindex }}" end="{{ count }}" format=%02d
register: sequence
- name: tag instances
no_log: true
ec2_tag:
region: us-east-1
resource: "{{ item.0.id }}"
tags:
Name: "itg-windows-web-{{ item.1.msg }}"
with_together:
- "{{ ec2.instances }}"
- "{{ sequence.results }}"
<强>命令:强>
ansible-playbook -i ./hosts ec2-basic.yml --extra-vars&#34; startindex = 1 数= 2&#34;
调用-1:
ansible-playbook -i ./hosts ec2-basic.yml --extra-vars "startindex=1 count=2"
这将创建2个实例并将名称标记itg-windows-web-01
和itg-windows-web-02
附加到其中。
调用2:
ansible-playbook -i ./hosts ec2-basic.yml --extra-vars "startindex=3 count=4"
这将添加另外两个实例,并为其添加名称标记itg-windows-web-03
和itg-windows-web-04
。
所有这些实例都按ec2type
标记分组。
工作原理:
为属性Name
使用count_tag
标记以外的自定义标记。如果使用Name
标记,则为所有创建的实例分配相同的标记值(这会使您的目的失效)。在上面的脚本中,我使用ec2type: web
作为我的 instance_tags 和 count_tag 。因此,ansible将使用此标记来确定应根据特定标记条件运行多少个节点。
您传递的count
值已分配给模板中的exact_count
。您还可以通过传递控制序列开始的startindex
来进一步控制。
with_sequence 根据您的输入生成序列。 Click here了解更多信息。
with_together 循环并行数据集。 Click here了解更多信息。
使用上面的ansible循环,我们将01,02 ...等附加到itg-windows-web
文本,并将其添加到实例Name
标记中。