Ansible / VMWARE - 检索网络接口标签并根据每个虚拟机的信息启动它们

Ansible / VMWARE - 检索网络接口标签并根据每个虚拟机的信息启动它们

语境

我想检索每个虚拟机的网络接口标签(我直接在变量数组中定义这些标签),然后连接它们。已知网络接口已存在于每个虚拟机上。

我已经有了一个脚本并且可以运行,但我希望它具有更强的适应性。

第一部分:“获取网络接口标签”对我来说很难找出如何列出接口并让 vmware_guest_network 为每个虚拟机获取所有接口。

环境

  • ESXI/vCenter 版本:7.0 U3
  • Ansible_core 版本:2.16.1
  • Ansible 版本:9.1.0
  • 虚拟机操作系统:RedHat 8.7

哪个脚本

变量:

  array:
    - name: "vm_1"
      folder: "/datacenter/vm/"
      storage: "Storage_1"
      cluster: "{{ cluster3 }}"
    - name: "vm_2"
      folder: "/datacenter/vm/"
      storage: "Storage_1"
      cluster: "{{ cluster2 }}"
    - name: "vm_3"
      folder: "/datacenter/vm/"
      storage: "Storage_5"
      cluster: "{{ cluster3 }}"

- name: Configure Network interfaces
  vmware_guest_network:

    hostname: "{{ ip_vcenter }}"
    username: "{{ username_vcenter }}"
    password: "{{ password_vcenter }}"
    datacenter: "{{ datacenter_name }}"
    validate_certs: no

    name: "{{ item.0.name }}"
    label: "{{ item.1 }}"
    state: present
  with_nested:
    - "{{ array }}"
    - [ "Network adapter 1", "Network adapter 2", "Network adapter 3" ]

我想做什么任务

  • 获取 array.name 变量中指示的虚拟机的所有信息
  • 列出每个虚拟机的所有网络适配器并将其格式化为列出变量
  • 根据第一个任务结果连接所有网络适配器

我已尝试过

我尝试过多种格式:

获取 array.name 变量中指示的虚拟机的所有信息

- name: Configure Network interfaces
  vmware_guest_network:
    
    hostname: "{{ ip_vcenter }}"
    username: "{{ username_vcenter }}"
    password: "{{ password_vcenter }}"
    datacenter: "{{ datacenter_name }}"
    validate_certs: no
    
    name: "{{ item.name }}"
  with_items: "{{ array }}"
  register: vm_info

列出每个虚拟机的所有网络适配器并将其格式化为列出变量

基于 vm_info 返回和数组变量使用 jquery 请求进行 set_facts 但我完全不知道我想写什么......

问题

您会使用什么技术?

相关内容