我很难引用我刚刚创建的 EC2 资源的实例 ID。创建它后,我想立即终止它。我的代码如下:
谢谢法案
---
- name: Example of provisioning servers
hosts: 127.0.0.1
connection: local
tasks:
- name: set_fact1
set_fact: foo = 1
- name: Create security group
local_action:
module: ec2_group
name: ep2
description: Access to the Episode2 servers
region: us-east-1
rules:
- proto: tcp
from_port: 22
to_port: 22
cidr_ip: 0.0.0.0/0
- name: Launch instances
local_action:
module: ec2
instance_tags:
Name: server1
Env: myenv
region: us-east-1
keypair: ansiblekeypair
group: ep2
instance_type: m1.small
image: ami-1aae3a0c
count: 1
wait: yes
register: ec2
- name: Terminate instances that were previously launched
ec2:
state: absent
region: us-east-1
instance_ids: "{{ ec2.instance_id[0] }}"
with_items: ec2
引用ec2.instances[0].id
。
使用- debug: var=ec2
任务或运行带有-vv
开关的 playbook 以查看已注册变量的详细值并检查哪些属性可供使用非常有用。
如果要终止刚刚启动的实例(假设它们的标签是特定的(,您还可以使用 exact_count
工具:
exact_count: 0
count_tag:
- Name: server1
- Env: myenv
根据文档(突出显示是我的(:
exact_count
一个整数值,指示应运行与
count_tag
参数匹配的实例数。实例基于此值创建或终止。
和count_tag
:
与
exact_count
一起使用,以确定应根据特定标记条件运行多少个节点。[...]
它会给出类似的东西:
- name: Terminate instances
local_action:
module: ec2
instance_tags:
Name: server1
Env: myenv
region: us-east-1
keypair: ansiblekeypair
exact_count: 0
count_tag:
- Name: server1
- Env: myenv
wait: yes