1

我正在尝试使用vmware_vm_shell模块更改 Windows Server 2012R2 vmware 客户机的 IP。到目前为止,我已经能够使用vsphere_guest模块从模板克隆虚拟机而没有问题,但是当我尝试执行以下任务来更改 IP 时:

- name: Configure IP address
  local_action:
    module: vmware_vm_shell
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_user }}"
    password: "{{ vcenter_password }}"
    cluster: "{{ Cluster }}"
    vm_id: "{{ machine }}"
    vm_username: "{{ machineUser }}"
    vm_password: "{{ ansible_windows_password  }}"
    vm_shell: "C:\\Windows\\System32\\WindowsPowershell\\1.0\\powershell.exe"
    vm_shell_args: " -command (Get-NetAdapter -Name Ethernet |New-NetIPAddress -InterfaceAlias Ethernet -AddressFamily IPv4 -IPAddress {{ new_machine_ip }} -PrefixLength {{ new_machine_mask_bits }} -DefaultGateway {{ new_machine_gateway }} )-and (Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses {{ new_machine_dns }})"
    vm_shell_cwd: "C:\\Windows\\Temp"
    validate_certs: False

Ansible 的回应是"msg": "File <unspecified filename> was not found"

当我尝试从pyvmomi-community-samplesexecute_program_in_vm.py运行脚本时,我得到了同样的错误:Caught vmodl fault : File <unspecified filename> was not found

我拥有的 vmware 用户具有所有Guest Operations权限集。我在这里想念什么?

PS:我遵循了这个指南

4

1 回答 1

0

用我做的这个任务再试一次。该模块有时会在解析 powershell 命令时出现问题。至少这是我的经验。我不知道为什么我的命令有效而你的命令无效。我替换了“vm_shell_args”中的命令。

您只需替换方括号中的值。

编辑: 也可以再次尝试剧本,但变量写入时没有空格(例如"{{vcenter_hostname}}",而不是"{{ vcenter_hostname }}"

  - name: change IP
    local_action:
      module: vmware_vm_shell
      hostname: "{{ vcenter_hostname }}"
      username: "{{ vcenter_user }}"
      password: "{{ vcenter_password }}"
      cluster: "{{ Cluster }}"
      vm_id: "{{ machine }}"
      vm_username: "{{ machineUser }}"
      vm_password: "{{ ansible_windows_password  }}"
      vm_shell: 'C:\Windows\System32\WindowsPowershell\1.0\powershell.exe'
      vm_shell_args: 'netsh interface ip set address [Interface name] static [New IP] [Subnetmask] [Gateway]'
于 2017-01-03T16:36:49.377 回答