Files
docs/Ansible Documentation/Playbooks/Windows/Hyper-V/Deploy-VM.md
Nicole Rappe b9aeaabbfb Initial Commit
Bringing Documentation into Gitea
2023-12-21 01:15:09 -07:00

1.5 KiB

Deploy-VM

Purpose: Deploy an Ubuntu Server 20.04 Virtual Machine to Hyper-V from an ISO image located at a pre-defined location.

---
- name: Deploy Hyper-V Guest VM
  hosts: all
  gather_facts: no

  tasks:
    - name: Set the randomized Hyper-V Guest VM Name Variable
      set_fact:
        vm_name_fact: "{{ vm_name }}"

    - name: Create VM folder
      ansible.windows.win_file:
        path: "{{ vm_folder }}"
        state: directory

    - name: Create Guest VM
      ansible.windows.win_shell: |
        New-VM -Name "{{ vm_name_fact }}" -MemoryStartupBytes "{{ vm_memory }}" -NewVHDPath "{{ vm_folder }}\\{{ vm_name_fact }}.vhdx" -NewVHDSizeBytes "{{ vm_storage }}" -Path "{{ vm_folder }}" -Generation 2
      register: vm_creation_result

    - name: Attach ISO to VM
      ansible.windows.win_shell: |
        Add-VMDvdDrive -VMName "{{ vm_name_fact }}" -Path "{{ iso_path }}"
      when: vm_creation_result is changed

    - name: Configure VM to boot from DVD
      ansible.windows.win_shell: |
        Set-VMFirmware -VMName "{{ vm_name_fact }}" -FirstBootDevice (Get-VMDvdDrive -VMName "{{ vm_name }}")
      when: vm_creation_result is changed

    - name: Disable VM Secure Boot
      ansible.windows.win_shell: |
        Set-VMFirmware -VMName "{{ vm_name_fact }}" -EnableSecureBoot Off
      when: vm_creation_result is changed

    - name: Start Guest VM
      ansible.windows.win_shell: |
        Start-VM -Name "{{ vm_name_fact }}"
      when: vm_creation_result is changed