语境
我想检索每个虚拟机的网络接口标签(我直接在变量数组中定义这些标签),然后连接它们。已知网络接口已存在于每个虚拟机上。
我已经有了一个脚本并且可以运行,但我希望它具有更强的适应性。
第一部分:“获取网络接口标签”对我来说很难找出如何列出接口并让 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 但我完全不知道我想写什么......
问题
您会使用什么技术?