Search code examples
vagrantpackervagrant-windows

Guest OS Type invalid for Windows 10 in Packer


We are trying vagrant for creating windows 10 virtual box image for one of our projects internally. As part of it, I got windows 10 64 bit disc image and did some research on creating custom image using our own OS disc. Hashicorp has Packer application along with vagrant which helps in creating virtual box using custom images.

Using packer, I have created my json file, template file, validated it and ran build command to create a virtual box, but the build fails at guest OS type and couldnt figure out what is the correct guest OS type name for windows 10. I am attaching my json file, template file, build logs for your reference. Any idea can be greatly appreciated!!

Windows-10.json

{
  "builders": [
{
  "type": "virtualbox-iso",
  "iso_url": "{{user `iso_url`}}",
  "iso_checksum_type": "{{user `iso_checksum_type`}}",
  "iso_checksum": "{{user `iso_checksum`}}",
  "headless": false,
  "boot_wait": "2m",
  "ssh_username": "vagrant",
  "ssh_password": "vagrant",
  "ssh_wait_timeout": "2h",
  "shutdown_command": "shutdown /s /t 10 /f /d p:4:1 /c \"Packer Shutdown\"",
  "guest_os_type": "windows-10",
  "disk_size": 61440,
  "vboxmanage": [
    [
      "modifyvm",
      "{{.Name}}",
      "--memory",
      "2048"
    ],
    [
      "modifyvm",
      "{{.Name}}",
      "--cpus",
      "2"
    ]
  ]
}
  ],
  "post-processors":[
{
  "type": "vagrant",
  "keep_input_artifact": false,
  "output": "windows_10_{{.Provider}}.box",
  "vagrantfile_template": "windows10.template"
}
  ],
  "variables": {
"iso_url": 
"C:/ABC/Vagrant/Windows_10/SW_DVD5_Win_Pro_10_1511.1_64BIT_English_MLF_X20-93914.iso",
"iso_checksum_type": "md5",
"iso_checksum": "bd09dc56c51a6ce137b8c0eb7c4369ea",
"autounattend": "./answer_files/10/Autounattend.xml"
  }
}

My windows 10 template looks like below Windows10.template

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.require_version ">= 1.6.2"

Vagrant.configure("2") do |config|
config.vm.define "vagrant-windows-10"
config.vm.box = "windows_10"
config.vm.communicator = "winrm"

# Admin user name and password
config.winrm.username = "vagrant"
config.winrm.password = "vagrant"

config.vm.guest = :windows
config.windows.halt_timeout = 15

config.vm.network :forwarded_port, guest: 3389, host: 3389, id: "rdp", auto_correct: true
config.vm.network :forwarded_port, guest: 22, host: 2222, id: "ssh", auto_correct: true

config.vm.provider :virtualbox do |v, override|
    #v.gui = true
    v.customize ["modifyvm", :id, "--memory", 2048]
    v.customize ["modifyvm", :id, "--cpus", 2]
    v.customize ["setextradata", "global", "GUI/SuppressMessages", "all" ]
end

config.vm.provider :vmware_fusion do |v, override|
    #v.gui = true
    v.vmx["memsize"] = "2048"
    v.vmx["numvcpus"] = "2"
    v.vmx["ethernet0.virtualDev"] = "vmxnet3"
    v.vmx["RemoteDisplay.vnc.enabled"] = "false"
    v.vmx["RemoteDisplay.vnc.port"] = "5900"
    v.vmx["scsi0.virtualDev"] = "lsisas1068"
end

config.vm.provider :vmware_workstation do |v, override|
    #v.gui = true
    v.vmx["memsize"] = "2048"
    v.vmx["numvcpus"] = "2"
    v.vmx["ethernet0.virtualDev"] = "vmxnet3"
    v.vmx["RemoteDisplay.vnc.enabled"] = "false"
    v.vmx["RemoteDisplay.vnc.port"] = "5900"
    v.vmx["scsi0.virtualDev"] = "lsisas1068"
end
end

Windows10.json has been successfully validated and when am running packer build, below is the error i get

packer build windows10.json

virtualbox-iso output will be in this color.

==> virtualbox-iso: Downloading or copying Guest additions
virtualbox-iso: Downloading or copying: 
file:///C:/Program%20Files/Oracle/VirtualBox/VBoxGuestAdditions.iso
==> virtualbox-iso: Downloading or copying ISO
virtualbox-iso: Downloading or copying: file:///C:/ABC/Vagrant/Windows_10/SW_DVD5_Win_Pro_10_1511.1_64BIT_English_MLF_X20-93914.iso
==> virtualbox-iso: Creating virtual machine...
==> virtualbox-iso: Error creating VM: VBoxManage error: VBoxManage.exe: error: Guest OS type 'windows-10' is invalid
==> virtualbox-iso: VBoxManage.exe: error: Details: code 
VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component VirtualBoxWrap, interface IVirtualBox, callee IUnknown
==> virtualbox-iso: VBoxManage.exe: error: Context: "CreateMachine(bstrSettingsFile.raw(), bstrName.raw(), ComSafeArrayAsInParam(groups), bstrOsTypeId.raw(), createFlags.raw(), machine.asOutParam())" at line 273 of file VBoxManageMisc.cpp
==> virtualbox-iso: Deleting output directory...
Build 'virtualbox-iso' errored: Error creating VM: VBoxManage error: 
VBoxManage.exe: error: Guest OS type 'windows-10' is invalid
VBoxManage.exe: error: Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component VirtualBoxWrap, interface IVirtualBox, callee IUnknown
VBoxManage.exe: error: Context: "CreateMachine(bstrSettingsFile.raw(), bstrName.raw(), ComSafeArrayAsInParam(groups), bstrOsTypeId.raw(), createFlags.raw(), machine.asOutParam())" at line 273 of file VBoxManageMisc.cpp

==> Some builds didn't complete successfully and had errors:
--> virtualbox-iso: Error creating VM: VBoxManage error: VBoxManage.exe: error: Guest OS type 'windows-10' is invalid
VBoxManage.exe: error: Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component VirtualBoxWrap, interface IVirtualBox, callee IUnknown
VBoxManage.exe: error: Context: "CreateMachine(bstrSettingsFile.raw(), bstrName.raw(), ComSafeArrayAsInParam(groups), bstrOsTypeId.raw(), createFlags.raw(), machine.asOutParam())" at line 273 of file VBoxManageMisc.cpp

==> Builds finished but no artifacts were created.

Solution

  • See the documentation Packer docs guest_os_type. Just run VBoxManage list ostypes and you will find that you should use Windows10_64.