ansible vmware windows 服务器

ansible vmware windows server

我正在尝试执行我的 ansible 剧本来启动具有 IP 设置的 VMware-windows-server,但是 VM 正在启动但没有 IP 设置。

执行剧本后我没有收到任何错误,它的显示也发生了变化,但是当我在 Vmware 环境中检查时 IP 没有反映。

尝试了所有可能的方法,谁能帮我解决这个问题。 谢谢

这是我的剧本:

---
- hosts: vm-windows-server2012
  gather_facts: false
  connection: local
  vars_files:
      - group_vars/vm-windows-server2012
  tasks:
  - name: "PROVISION | Create Windows server 2012 from template"
    vmware_guest:
      validate_certs: false
      hostname: "{{ vcenter_host }}"
      username: "{{ vcenter_username }}"
      password: "{{ vcenter_password }}"
      datacenter: "{{ datacenter }}"
      name: "{{ guest_name }}"
      folder: "{{ folder }}"
      template: "{{ vmtemplate }}"
      state: poweredon
      esxi_hostname: "{{ esxi_host }}"
      hardware:
        num_cpus: "{{ cpu }}"
        memory_mb: "{{ mem_mb }}"
      disk:
        - size_gb: "{{ disk }}"
          type: thin
          datastore: "{{ datastore }}"
    register: new_vm
  - name: Wait for VMware tools to become available
    vmware_guest_tools_wait:
       hostname: "{{ vcenter_host }}"
       username: "{{ vcenter_username }}"
       password: "{{ vcenter_password }}"
       validate_certs: False
       name: "{{ vm_name }}"
       folder: "/{{ datacenter }}/vm/{{ folder }}"
  - name: "IP configuration"
    local_action:
       module: vmware_vm_shell
       hostname: "{{ vcenter_host }}"
       username: "{{ vcenter_username }}"
       password: "{{ vcenter_password }}"
       datacenter: "{{ datacenter }}"
       vm_id: "{{ vm_name }}"
       vm_username: "{{ v_username }}"
       vm_password: "{{ v_password }}"
       vm_shell: 'C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe'
       vm_shell_args: 'netsh interface ip set address "Ethernet0 2" static 10.193.34.250 255.255.255.192 10.193.34.193'
       vm_shell_cwd: 'C:\Users\Administrator'
       validate_certs: False

您的代码没有问题,但是您必须等待 VMWare 工具在 VM 上处于活动状态才能使用 vmware_vm_shell

vmware_vm_shell:

之前使用这个
  - name: Wait for VMware tools to become available
    vmware_guest_tools_wait:
      hostname: "{{ vcenter_host }}"
      username: "{{ vcenter_username }}"
      password: "{{ vcenter_password }}"
      validate_certs: False
      name: "{{ vm_name }}"
      folder: "/{{ vcenter_datacenter }}/vm/{{ default_vm_folder }}"

   - name: Change IP Address for Windows Machine
      vmware_vm_shell:
        hostname: "{{ vcenter_host }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        validate_certs: False
        datacenter: "{{ vcenter_datacenter }}"
        folder: "/{{ datacenter }}/vm/{{ folder }}"
        vm_id: "{{ vm_name }}"
        vm_username: "{{ v_username }}"
        vm_password: "{{ v_password }}"
        vm_shell: netsh.exe
        vm_shell_args: ' interface ip set address name="Ethernet0 2" static 10.193.34.250 255.255.255.192 10.193.34.193'
        vm_shell_cwd: "C:\Windows\System32"

    - name: Change DNS for Windows Machine
      vmware_vm_shell:
        hostname: "{{ vcenter_host }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        validate_certs: False
        datacenter: "{{ vcenter_datacenter }}"
        folder: "/{{ datacenter }}/vm/{{ folder }}"
        vm_id: "{{ vm_name }}"
        vm_username: "{{ v_username }}"
        vm_password: "{{ v_password }}"
        vm_shell       : netsh.exe
        vm_shell_args  : ' interface ip set dns name="Ethernet0 2" static 8.8.8.8'
        vm_shell_cwd   : "C:\Windows\System32"

    - name: Wait until the ipaddress of machine is ready
      wait_for:
        port: 5986
        delay: 20
        state: started
        host: "10.193.34.250"