Ansible打印创建的主机

Ansible打印创建的主机,ansible,openstack,ansible-inventory,Ansible,Openstack,Ansible Inventory,我写了一本Ansible剧本,创建了多个虚拟机。剧本分成两个文件。Main.yaml和vars.yaml。它正在创建虚拟机,而且似乎工作得很好。我没有收到任何错误,所以我假设它成功地将创建的主机添加到资源清册中。我想检查是否已将创建的主机添加到资源清册中。如何打印/列出清单的主机?我的目标是在稍后阶段在创建的VM上运行脚本。谢谢 **Main.yaml** #########CREATING VM######### --- - hosts: localhost vars: http_

我写了一本Ansible剧本,创建了多个虚拟机。剧本分成两个文件。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 }
这就是我们的目的

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

groups['just_created']

您可以使用playbook中的以下命令打印清单文件的内容:

- debug: msg="the hosts are is {{lookup('file', '/etc/ansible/hosts') }}"
或者,您可以使用以下命令行列出主机:

ansible --list-hosts all
或者使用playbook中的以下命令:

tasks:
  - name: list hosts
command: ansible --list-hosts all
register: hosts
  - debug:
    msg: "{{hosts.stdout_lines}}"

下面的示例演示了如何创建内存中的主机并列出它们。神奇的调料是,
add_hosts
需要在一个单独的游戏中

---
 - name: adding host playbook
   hosts: localhost
   connection: local
   tasks:
   - name: add host to in-memory inventory
     add_host:
       name: awesome_host_name
       groups: in_memory

 - name: checking hosts
   hosts: in_memory
   connection: local
   gather_facts: false
   tasks:
     - debug: var=group_names
     - debug: msg="{{ inventory_hostname }}"
     - debug: var=hostvars[inventory_hostname]

这不是OP所要求的。OP使用
添加主机
模块创建内存资源清册。您的方法(除了在原始
ansible playbook
调用中指定了特定清单的任何情况下都是错误的)不会显示这些主机。