Ansible / vmware_guest_network 添加后不连接网卡

问题描述

我们需要为 Vmware 上的多个虚拟机添加一个新的 NIC。 为此,我们使用 ansible 2.9.3Python 版本 = 2.7.5

这是添加的主要剧本:

---
-
  become: false
  gather_facts: false
  hosts: srvlist
  tasks:
    -
      vmware_guest_network:
        hostname: "{{ vcenter_hostname }}"
        password: "{{ vcenter_password }}"
        username: "{{ vcenter_username }}"
        validate_certs: false
        cluster: "{{ vm_cluster }}"
        datacenter: "{{ vm_datacenter }}"
        gather_network_info: false
        name: "{{ vm_name }}"
        networks:
          -
            device_type: vmxnet3
            dvswitch_name: SWITCH1
            name: "TESTPORTGROUP|TEST_APP"
            start_connected: true
            state: new
            connected: true
      delegate_to: localhost
  vars:
    vcenter_hostname: "any.sample.ip"
    vcenter_password: mypassword
    vcenter_username: administrator
    vm_name: myNewDuplicatedVM
    vm_cluster: ANY_CLUSTER_NAME
    vm_datacenter: ANY_DATACENTER_NAME

Playbook 部分工作,这里的问题是新网卡在创建后没有连接,我们可以看到属性设置正确:

start_connected: true
state: new
connected: true

我们还可以看到 name 中的 networks 变量使用了相应端口组的标签/名称:name: "TESTPORTGROUP|TEST_APP"

记住这将是一个新的 NIC;这意味着我们有一个已经在工作。 现在,当我使用 vmware_guest_network 获取详细信息只是为了从 VM 收集详细信息时,它显示的名称与预期不同:

ok: [vcenter_ip] => {
    "vminfo": {
        "changed": false,"failed": false,"network_data": {
            "0": {
                "allow_guest_ctl": true,"connected": true,"device_type": "VMXNET3","label": "Network adapter 1","mac_addr": "00:50:56:89:78:42","name": "DVSwitch: d9 27 09 50 0e ty b7 e2-91 b0 52 1d 6b 79 26 45","start_connected": true,"unit_number": 7,"wake_onlan": true
            },"1": {
                "allow_guest_ctl": true,"connected": false,"label": "Network adapter 2","mac_addr": "00:50:56:89:a1:65","name": "TESTPORTGROUP|TEST_APP","unit_number": 8,"wake_onlan": true
            }
        }
    }

第一个是已经存在的 NIC,第二个是新的并且没有连接,如您所见。 我不知道为什么没有连接,也不知道为什么名称不同。 我理解在定制阶段出现错误时,nic 保持断开连接状态,但 vmlogs 或 ansible 中没有显示错误。

我也尝试使用整个低级交换机名称,但正如我所料,ansible 失败并说端口组不存在。

这可能是一个错误,或者我实际上缺少一些配置。

解决方法

您是使用 vmware-workstation 还是 vsphere 来托管您的虚拟机? 如果您使用的是 vsphere/vcenter,一个简单的方法是使用 powerCLI 来管理所有带有 vsphere API 的虚拟机。只需使用 New-NetworkAdapter cmdlet 添加新网卡,您就可以配置 vs/vds、vlan、网卡类型等。让您在应用任何更改之前拍摄快照。

new-networkadapter -vm <vmname> -NetworkName "<Port group name>" -Type "VMXNET3" -startconnected

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...