如何使用ansible更改vmware网络适配器

How to change vmware network adapter with ansible

我使用的是 ansible 2.9.2,我需要更换 vmware 特定虚拟机上的网络适配器。

在我的 vcenter 虚拟机设置中,我看到:

Networks: Vlan_12

我的剧本没有看到那个网络名称。

  tasks:
    - name:  Changing network adapter
      vmware_guest_network:
        datacenter: "{{ datacenter"}} 
        hostname: "{{ vcenter_server }}"
        username: "{{ vcenter_user  }}"
        password: "{{ vcenter_pass }}"
        folder: "{{ folder }}"
        cluster: "{{ cluster }}"
        validate_certs: no
        name: test
        networks:
          - name: "Vlan_12"
            vlan: "Vlan_12"
            connected: false
            state: absent
      register: output

我收到这个错误: 致命的:[本地主机]:失败! => {"changed":错误,"msg":"Network 'Vlan_12' does not exist."}

我正在尝试用另一个名为 Vlan_13 的网络适配器替换 vlan_12,因此我首先尝试删除现有的网络适配器。在 ansible 文档中,他们的示例非常有限。 谢谢。

您需要关闭特定于 vmware 的机器,以便您可以更换网络适配器:

  tasks:
    - name:  Changing network adapter
      vmware_guest_network:
        datacenter: "{{ datacenter"}} 
        hostname: "{{ vcenter_server }}"
        username: "{{ vcenter_user  }}"
        password: "{{ vcenter_pass }}"
        folder: "{{ folder }}"
        cluster: "{{ cluster }}"
        validate_certs: no
        name: test
        networks:
        - name: "Vlan_12"
          label: "Network adapter 1"
          connected: False
          state: absent
        - label: "Network adapter 1"
          state: new
          connected: True
          name: Vlan_13

此 playbook 删除了当前的网络适配器,并添加了新的适配器。我找不到改变的方法。仅删除和添加。

您不必在 addin/removing 联网时关闭机器。 您可以 remove/add 即时网卡,至少在 linux 虚拟机上,不确定 Win 虚拟机。

更改网络直播效果很好。您只需要 state: present、当前接口的标签(几乎可以肯定 'Network adapter 1',这是第一个网络接口的默认值),以及您要连接到此的端口组的名称接口.

这是我一直在使用的剧本:

---
- hosts: localhost
  gather_facts: no
  tasks:
    - name: migrate network
      vmware_guest_network:
        hostname: '{{ vcenter_hostname }}'
        username: '{{ vcenter_username }}'
        password: '{{ vcenter_password }}'
        datacenter: '{{ datacenter }}'
        validate_certs: False
        name: '{{ vm_hostname }}'
        gather_network_info: False
        networks:
          - state: present
            label: "Network adapter 1"
            name: '{{ new_net_name }}'
      delegate_to: localhost