引用刚刚在 Ansible 中创建的 EC2 资源的实例 ID



我很难引用我刚刚创建的 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

最新更新