Is it possible to create a virtual machine without installing an operating system in it using vagrant
oder packer
?
My use case: I create virtual machines with a defined hardware configuration (e.g. three hard disks) and boot them with different ISO installation files.
At the moment I use a script and call the functions of VBoxManage
(see below).
Is it possible to do the same using vagrant
oder packer
?
<code>::@echo off
:createvm
@SETLOCAL
set "VM_BASE_FOLDER=%~1"
set "VM_NAME=%~2"
set "BOOT_ISO=%~3"
set "VB_MANAGE_EXE=%PROGRAMFILES%OracleVirtualBoxVBoxManage.exe"
set VBOX_GUEST_ADDITIONS_ISO=C:Program FilesOracleVirtualBoxVBoxGuestAdditions.iso
set RECORDING_FILE=%VM_BASE_FOLDER%%VM_NAME%_Recording.webm
set HOST_PATH=w:\
set AUTO_MOUNT_POINT=z:
set SHAREDFOLDER_NAME=sharedfolder
"%VB_MANAGE_EXE%" createvm --name %VM_NAME% --ostype "Windows10_64" --register --basefolder "%VM_BASE_FOLDER%"
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --cpus 4
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --memory 8000
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --description "programmatically created vm"
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --clipboard bidirectional
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --draganddrop bidirectional
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --pae off
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --firmware efi
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --mouse usbtablet
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --paravirtprovider default
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --graphicscontroller vboxsvga
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --vram 128
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --usb on
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --usbehci on
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --usbxhci on
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --audiocontroller hda
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --audioin off
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --audioout off
REM "%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recording on
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingscreens 0
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingfile "%RECORDING_FILE%"
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingvideores 1024x768
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingvideorate 512
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingvideofps 10
"%VB_MANAGE_EXE%" guestproperty set %VM_NAME% "/VirtualBox/HostInfo/GUI/LanguageID" "de_DE"
"%VB_MANAGE_EXE%" setextradata global "GUI/SuppressMessages" "all"
"%VB_MANAGE_EXE%" setextradata %VM_NAME% "VBoxInternal2/EfiGraphicsResolution" "1920x1200"
"%VB_MANAGE_EXE%" storagectl %VM_NAME% --name "SATA" --add sata --portcount 5 --hostiocache on --bootable on
set "DISK_0_NAME=KINGSTON SFYRD2000G"
"%VB_MANAGE_EXE%" createmedium --filename "%VM_BASE_FOLDER%%VM_NAME%%DISK_0_NAME%.vmdk" --format VMDK --size 2000000 --variant "Standard"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type hdd --port 0 --device 0 --medium "%VM_BASE_FOLDER%%VM_NAME%%DISK_0_NAME%.vmdk"
set "DISK_1_NAME=KINGSTON SFYRDK2000G"
"%VB_MANAGE_EXE%" createmedium --filename "%VM_BASE_FOLDER%%VM_NAME%%DISK_1_NAME%.vmdk" --format VMDK --size 2000000 --variant "Standard"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type hdd --port 1 --device 0 --medium "%VM_BASE_FOLDER%%VM_NAME%%DISK_1_NAME%.vmdk"
set "DISK_2_NAME=KINGSTON SFYRS1000G"
"%VB_MANAGE_EXE%" createmedium --filename "%VM_BASE_FOLDER%%VM_NAME%%DISK_2_NAME%.vmdk" --format VMDK --size 1000000 --variant "Standard"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type hdd --port 2 --device 0 --medium "%VM_BASE_FOLDER%%VM_NAME%%DISK_2_NAME%.vmdk"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type dvddrive --port 3 --device 0 --medium "%BOOT_ISO%"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type dvddrive --port 4 --device 0 --medium "%VBOX_GUEST_ADDITIONS_ISO%"
"%VB_MANAGE_EXE%" sharedfolder add %VM_NAME% --name "%SHAREDFOLDER_NAME%" --hostpath "%HOST_PATH%" --automount --auto-mount-point "%AUTO_MOUNT_POINT%"
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --boot1 disk
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --boot2 dvd
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --boot3 none
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --boot4 none
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --cableconnected1 off
@ENDLOCAL
@echo on
@EXIT /b
</code>
<code>::@echo off
:createvm
@SETLOCAL
set "VM_BASE_FOLDER=%~1"
set "VM_NAME=%~2"
set "BOOT_ISO=%~3"
set "VB_MANAGE_EXE=%PROGRAMFILES%OracleVirtualBoxVBoxManage.exe"
set VBOX_GUEST_ADDITIONS_ISO=C:Program FilesOracleVirtualBoxVBoxGuestAdditions.iso
set RECORDING_FILE=%VM_BASE_FOLDER%%VM_NAME%_Recording.webm
set HOST_PATH=w:\
set AUTO_MOUNT_POINT=z:
set SHAREDFOLDER_NAME=sharedfolder
"%VB_MANAGE_EXE%" createvm --name %VM_NAME% --ostype "Windows10_64" --register --basefolder "%VM_BASE_FOLDER%"
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --cpus 4
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --memory 8000
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --description "programmatically created vm"
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --clipboard bidirectional
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --draganddrop bidirectional
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --pae off
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --firmware efi
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --mouse usbtablet
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --paravirtprovider default
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --graphicscontroller vboxsvga
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --vram 128
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --usb on
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --usbehci on
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --usbxhci on
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --audiocontroller hda
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --audioin off
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --audioout off
REM "%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recording on
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingscreens 0
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingfile "%RECORDING_FILE%"
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingvideores 1024x768
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingvideorate 512
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingvideofps 10
"%VB_MANAGE_EXE%" guestproperty set %VM_NAME% "/VirtualBox/HostInfo/GUI/LanguageID" "de_DE"
"%VB_MANAGE_EXE%" setextradata global "GUI/SuppressMessages" "all"
"%VB_MANAGE_EXE%" setextradata %VM_NAME% "VBoxInternal2/EfiGraphicsResolution" "1920x1200"
"%VB_MANAGE_EXE%" storagectl %VM_NAME% --name "SATA" --add sata --portcount 5 --hostiocache on --bootable on
set "DISK_0_NAME=KINGSTON SFYRD2000G"
"%VB_MANAGE_EXE%" createmedium --filename "%VM_BASE_FOLDER%%VM_NAME%%DISK_0_NAME%.vmdk" --format VMDK --size 2000000 --variant "Standard"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type hdd --port 0 --device 0 --medium "%VM_BASE_FOLDER%%VM_NAME%%DISK_0_NAME%.vmdk"
set "DISK_1_NAME=KINGSTON SFYRDK2000G"
"%VB_MANAGE_EXE%" createmedium --filename "%VM_BASE_FOLDER%%VM_NAME%%DISK_1_NAME%.vmdk" --format VMDK --size 2000000 --variant "Standard"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type hdd --port 1 --device 0 --medium "%VM_BASE_FOLDER%%VM_NAME%%DISK_1_NAME%.vmdk"
set "DISK_2_NAME=KINGSTON SFYRS1000G"
"%VB_MANAGE_EXE%" createmedium --filename "%VM_BASE_FOLDER%%VM_NAME%%DISK_2_NAME%.vmdk" --format VMDK --size 1000000 --variant "Standard"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type hdd --port 2 --device 0 --medium "%VM_BASE_FOLDER%%VM_NAME%%DISK_2_NAME%.vmdk"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type dvddrive --port 3 --device 0 --medium "%BOOT_ISO%"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type dvddrive --port 4 --device 0 --medium "%VBOX_GUEST_ADDITIONS_ISO%"
"%VB_MANAGE_EXE%" sharedfolder add %VM_NAME% --name "%SHAREDFOLDER_NAME%" --hostpath "%HOST_PATH%" --automount --auto-mount-point "%AUTO_MOUNT_POINT%"
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --boot1 disk
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --boot2 dvd
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --boot3 none
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --boot4 none
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --cableconnected1 off
@ENDLOCAL
@echo on
@EXIT /b
</code>
::@echo off
:createvm
@SETLOCAL
set "VM_BASE_FOLDER=%~1"
set "VM_NAME=%~2"
set "BOOT_ISO=%~3"
set "VB_MANAGE_EXE=%PROGRAMFILES%OracleVirtualBoxVBoxManage.exe"
set VBOX_GUEST_ADDITIONS_ISO=C:Program FilesOracleVirtualBoxVBoxGuestAdditions.iso
set RECORDING_FILE=%VM_BASE_FOLDER%%VM_NAME%_Recording.webm
set HOST_PATH=w:\
set AUTO_MOUNT_POINT=z:
set SHAREDFOLDER_NAME=sharedfolder
"%VB_MANAGE_EXE%" createvm --name %VM_NAME% --ostype "Windows10_64" --register --basefolder "%VM_BASE_FOLDER%"
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --cpus 4
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --memory 8000
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --description "programmatically created vm"
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --clipboard bidirectional
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --draganddrop bidirectional
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --pae off
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --firmware efi
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --mouse usbtablet
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --paravirtprovider default
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --graphicscontroller vboxsvga
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --vram 128
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --usb on
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --usbehci on
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --usbxhci on
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --audiocontroller hda
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --audioin off
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --audioout off
REM "%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recording on
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingscreens 0
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingfile "%RECORDING_FILE%"
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingvideores 1024x768
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingvideorate 512
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --recordingvideofps 10
"%VB_MANAGE_EXE%" guestproperty set %VM_NAME% "/VirtualBox/HostInfo/GUI/LanguageID" "de_DE"
"%VB_MANAGE_EXE%" setextradata global "GUI/SuppressMessages" "all"
"%VB_MANAGE_EXE%" setextradata %VM_NAME% "VBoxInternal2/EfiGraphicsResolution" "1920x1200"
"%VB_MANAGE_EXE%" storagectl %VM_NAME% --name "SATA" --add sata --portcount 5 --hostiocache on --bootable on
set "DISK_0_NAME=KINGSTON SFYRD2000G"
"%VB_MANAGE_EXE%" createmedium --filename "%VM_BASE_FOLDER%%VM_NAME%%DISK_0_NAME%.vmdk" --format VMDK --size 2000000 --variant "Standard"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type hdd --port 0 --device 0 --medium "%VM_BASE_FOLDER%%VM_NAME%%DISK_0_NAME%.vmdk"
set "DISK_1_NAME=KINGSTON SFYRDK2000G"
"%VB_MANAGE_EXE%" createmedium --filename "%VM_BASE_FOLDER%%VM_NAME%%DISK_1_NAME%.vmdk" --format VMDK --size 2000000 --variant "Standard"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type hdd --port 1 --device 0 --medium "%VM_BASE_FOLDER%%VM_NAME%%DISK_1_NAME%.vmdk"
set "DISK_2_NAME=KINGSTON SFYRS1000G"
"%VB_MANAGE_EXE%" createmedium --filename "%VM_BASE_FOLDER%%VM_NAME%%DISK_2_NAME%.vmdk" --format VMDK --size 1000000 --variant "Standard"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type hdd --port 2 --device 0 --medium "%VM_BASE_FOLDER%%VM_NAME%%DISK_2_NAME%.vmdk"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type dvddrive --port 3 --device 0 --medium "%BOOT_ISO%"
"%VB_MANAGE_EXE%" storageattach %VM_NAME% --storagectl "SATA" --type dvddrive --port 4 --device 0 --medium "%VBOX_GUEST_ADDITIONS_ISO%"
"%VB_MANAGE_EXE%" sharedfolder add %VM_NAME% --name "%SHAREDFOLDER_NAME%" --hostpath "%HOST_PATH%" --automount --auto-mount-point "%AUTO_MOUNT_POINT%"
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --boot1 disk
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --boot2 dvd
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --boot3 none
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --boot4 none
"%VB_MANAGE_EXE%" modifyvm %VM_NAME% --cableconnected1 off
@ENDLOCAL
@echo on
@EXIT /b