代码之家  ›  专栏  ›  技术社区  ›  benice

Ansible打印创建的主机

  •  2
  • benice  · 技术社区  · 7 年前

    我写了一本Ansible剧本,创建了多个虚拟机。剧本分为两个文件。主要的yaml和vars。亚马尔。它创建了虚拟机,似乎工作得很好。我没有收到任何错误,所以我假设它成功地将创建的主机添加到清单中。我想检查是否已将创建的主机添加到资源清册中。如何打印/列出清单的主机?我的目标是在稍后的阶段在创建的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 }
    
    3 回复  |  直到 7 年前
        1
  •  6
  •   techraf    7 年前

    这是什么 magic variables 用于。

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

    groups['just_created']
    
        2
  •  0
  •   Aleksander Rezen    4 年前

    下面的示例说明了如何创建内存中的主机并列出它们。神奇的酱汁是 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]
    
        3
  •  -2
  •   yamenk    7 年前

    您可以使用以下方式从剧本中打印清单文件的内容:

    - debug: msg="the hosts are is {{lookup('file', '/etc/ansible/hosts') }}"
    

    或者,您可以使用以下命令行列出主机:

    ansible --list-hosts all
    

    或者使用剧本中的以下命令:

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