Ansible 打印创建的主机

ben*_*ice 2 openstack ansible ansible-inventory

我写了一个 Ansible Playbook 来创建多个 VM。Playbook 分为两个文件。Main.yaml 和 vars.yaml。它创建了虚拟机,它似乎运行良好。我没有收到任何错误,所以我认为它已成功将创建的主机添加到库存中。我想检查创建的主机是否已添加到清单中。我如何打印/列出库存的主机?我的目标是稍后在创建的 VM 上运行脚本。谢谢。

**Main.yaml**
#########CREATING VM#########
---
- hosts: localhost
  vars:
    http_port: 80
max_clients: 200
  vars_files:
   - vars.yaml
  tasks:
  - name: create VM
    os_server:
      name: "{{ item.name }}"
      state: present
      image: "{{ item.image }}"
      boot_from_volume: True
      security_groups: ssh
      flavor: "{{ item.flavor }}"
      key_name: mykey
      region_name: "{{ lookup('env', 'OS_REGION_NAME') }}"
      nics:
        - net-name: private
      wait: yes
    register: instances
    with_items: "{{ instance_definitions }}"
 ############################################
  - name: whait 15 seconds
    pause: seconds=15
    when: instances.changed
######DEBUG#################################
  - name: display results
    debug:
      msg: "{{ item }}"
    with_items: "{{ instances.results }}"
############################################
  - name: Add new VM to ansible Inventory
    add_host:
      name: "{{ item.server.name}}"
      ansible_host: "{{item.server.public_v4}}"
      ansible_user: "{{ansible_user}}"
      ansible_ssh_common_args: -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
      groups: just_created
    with_items: "{{ instances.results }}"



**vars.yaml**
---
  instance_definitions:
     - { name: Debian Jessie, image: Debian Jessie 8, flavor: c1.small, loginame: debian }
     - { name: Debian Stretch, image: Debian Stretch 9, flavor: c1.small, loginame: debian }
Run Code Online (Sandbox Code Playgroud)

tec*_*raf 6

这就是魔术变量的用途。

您的所有主机都将在列表中:

groups['just_created']
Run Code Online (Sandbox Code Playgroud)