【问题标题】:Excecute command in vSphere Guest machine with Ansible使用 Ansible 在 vSphere 客户机中执行命令
【发布时间】:2016-12-20 10:07:21
【问题描述】:

我正在尝试使用 vmware_vm_shell 模块更改 Windows Server 2012R2 vmware 客户机的 IP。到目前为止,我已经能够使用 vsphere_guest 模块从模板克隆 VM 没有问题,但是当我尝试执行以下任务来更改 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-samples 运行execute_program_in_vm.py 脚​​本时遇到同样的错误:Caught vmodl fault : File <unspecified filename> was not found

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

PS:我关注了this guide

【问题讨论】:

  • 我的VMware vCenter服务器版本是5.5.0。

标签: python ansible windows-server-2012-r2 vsphere pyvmomi


【解决方案1】:

用我做的这个任务再试一次。该模块有时会在解析 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]'

【讨论】:

  • 遇到同样的错误,"msg": "File <unspecified filename> was not found" 使用以下行时:vm_shell: 'C:\Windows\System32\WindowsPowershell\1.0\powershell.exe' vm_shell_args: 'netsh interface ip set address Ethernet static 10.0.110.42 255.255.255.0 10.0.110.1 你还有什么我可以尝试的技巧吗?
  • 你能告诉我你在运行剧本时得到的全部信息吗?你忘了把撇号(')放在vm_shell_args: 'netsh interface ip set address Ethernet static 10.0.110.42 255.255.255.0 10.0.110.1 的末尾吗?
  • 这是我得到的完整输出(我还删除了你更新时的空格:)pastie.org/10987987
  • 对我来说似乎是一个不寻常的输出。你在哪个操作系统上运行这个剧本?以及如何运行 playbook:是否使用命令 ansible-playbook?你使用的是哪个版本的 Ansible、Python 和 Pyvmomi?
  • 我正在使用 ansible-playbook 命令在 Ubuntu 14.04 上运行。版本:Ansible 2.2.0.0、python 2.7.6、pyvmomi 6.5 和 pywinrm 0.2.2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多