【问题标题】:Ansible vmware_guest_info module loop through vm names to get UUIDAnsible vmware_guest_info 模块循环遍历 vm 名称以获取 UUID
【发布时间】:2023-02-15 06:00:06
【问题描述】:

我正在编写一个简单的剧本,以使用 ansible 从 vmware 获取所有提供的 vm 名称的 UUID。 我可以使用 var: vm_info.results 获取所有 vm 的输出,但我只需要 UUID。我尝试var: vm_info.results.instance.instance_uuid 但它不起作用。输出如下。

TASK [print VM UUID] **************************************************************************************************************************
ok: [localhost] => (item=server01) => {
    "ansible_loop_var": "item",
    "item": "server01",
    "vm_info.results.instance.instance_uuid": "VARIABLE IS NOT DEFINED!"
}
ok: [localhost] => (item=server02) => {
    "ansible_loop_var": "item",
    "item": "server02",
    "vm_info.results.instance.instance_uuid": "VARIABLE IS NOT DEFINED!"
}

下面是我的 yaml 文件。

---
- name: Vm UUID Play
  hosts: localhost
  become: false
  gather_facts: false
  pre_tasks:
    - include_vars: vars/vmw-vmguest.yaml
  tasks:
    - 
      name: Get Vm UUID
      vmware_guest_info:
          hostname: '{{ vsphere_host }}'
          username: '{{ vsphere_user }}'
          password: '{{ vsphere_password }}'
          validate_certs: no
          datacenter: '{{ vsphere_datacenter }}'
          name: '{{ item }}'
      register: vm_info
      with_items: '{{ virtual_machines }}'

    -
      name: print VM UUID
      debug:
        var: vm_info.results
        #var: vm_info.instance.instance_uuid
      with_items: '{{ virtual_machines }}'

【问题讨论】:

  • vm_info.results 是一个列表每次迭代的dict,因此你不能说results.instance它必须是results[SOME_VAR].instance或以其他方式更改with_items: "{{ vm_info.results }}"而不是像你一样迭代virtual_machines

标签: linux ansible vmware


【解决方案1】:

G.Baysec:它对你有用吗?如果是的话,你能分享一下吗?

我按照 mdaniel 给出的解决方案进行了尝试,但可能遗漏了一些东西,因为它仍然对我不起作用。

  • 名称:打印 VM UUID 调试: 变量:信息 with_items: '{{ info.results }}'

【讨论】:

    猜你喜欢
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多