Skip to content

Commit

Permalink
Documentation updated, Virtualbox audiocontroller switched to "hda"
Browse files Browse the repository at this point in the history
  • Loading branch information
ruzickap committed Feb 25, 2018
1 parent aa85ca0 commit 8d03d3f
Show file tree
Hide file tree
Showing 12 changed files with 156 additions and 63 deletions.
23 changes: 17 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Packer Templates mainly for the [libvirt](https://github.com/vagrant-libvirt/vagrant-libvirt) provider
# Packer Templates mainly for the Vagrant [libvirt](https://github.com/vagrant-libvirt/vagrant-libvirt) and [virtualbox](https://www.vagrantup.com/docs/virtualbox/) provider

## Customized+Clean/Minimal boxes for [libvirt](https://github.com/vagrant-libvirt/vagrant-libvirt) provider
## Customized+Clean/Minimal boxes for [libvirt](https://github.com/vagrant-libvirt/vagrant-libvirt) and [virtualbox](https://www.vagrantup.com/docs/virtualbox/) provider

---

Expand All @@ -18,6 +18,7 @@
* [QEMU-KVM](https://en.wikibooks.org/wiki/QEMU/Installing_QEMU)
* [Vagrant](https://www.vagrantup.com/downloads.html)
* [Vagrant Libvirt Plugin](https://github.com/pradels/vagrant-libvirt#installation)
* [VirtualBox](https://www.virtualbox.org/)


## Login Credentials
Expand All @@ -30,12 +31,17 @@

## VM Specifications

* Libvirt Provider
Drivers / Devices added for the VMs for specific providers.

### Libvirt
* VirtIO dynamic Hard Disk (up to 50 GiB)
* VirtIO Network Interface
* QXL Video Card (SPICE display)
* Channel Device (com.redhat.spice.0)

### VirtualBox
* SATA Disk


## Configuration

Expand Down Expand Up @@ -73,13 +79,16 @@
* New Network Window turned off
* Administrator account enabled
* EnableLUA
* Windows image was finalized using \`sysprep\`: [unattended.xml](https://github.com/ruzickap/packer-templates/blob/master/scripts/win-common/unattend.xml)


#### Additional Drivers installed for libvirt boxes - [VirtIO](https://fedoraproject.org/wiki/Windows_Virtio_Drivers)
Installed during installation:
* NetKVM: VirtIO Network driver
* qxldod: QXL graphics driver
* viostor: VirtIO Block driver (VirtIO SCSI controller driver)

Installed when the OS is installed via Ansible playbook [win.yml](https://github.com/ruzickap/packer-templates/blob/master/ansible/win.yml):
Installed components via Ansible playbook [win.yml](https://github.com/ruzickap/packer-templates/blob/master/ansible/win.yml) for Windows:
* vioscsi: Support for VirtIO SCSI pass-through controller
* Balloon: VirtIO Memory Balloon driver
* viorng: VirtIO RNG Device driver
Expand All @@ -88,10 +97,12 @@ Installed when the OS is installed via Ansible playbook [win.yml](https://github
* pvpanic: QEMU pvpanic device driver
* qemu-ga: [Qemu Guest Agent](http://wiki.libvirt.org/page/Qemu_guest_agent)

Image was finalized using sysprep with [unattended.xml](https://github.com/ruzickap/packer-templates/blob/master/scripts/win-common/unattend.xml).

## Helper scripts
#### Additional Drivers installed for virtualbox boxes
* VirtualBox Guest Additions


## Helper scripts
* `build.sh` - build single image specified on command line
* `build_all.sh` - builds all images
* `build_all_remote_ssh.sh` - connects to remote Ubuntu server, install the necessary packages for building images and execute `build_all.sh`
Expand Down
5 changes: 4 additions & 1 deletion Vagrantfile-windows.template
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,12 @@ Vagrant.configure("2") do |config|

config.vm.provider :virtualbox do |virtualbox, override|
virtualbox.gui = true
virtualbox.customize ["modifyvm", :id, "--memory", 2048]
virtualbox.customize ["modifyvm", :id, "--cpus", 2]
virtualbox.customize ["modifyvm", :id, "--audiocontroller", "hda"]
virtualbox.customize ["modifyvm", :id, "--memory", 2048]
virtualbox.customize ["modifyvm", :id, "--accelerate2dvideo", "on"]
virtualbox.customize ["modifyvm", :id, "--vram", 128]
virtualbox.customize ["modifyvm", :id, "--clipboard", "bidirectional"]
end

# Port forward for RDP
Expand Down
2 changes: 1 addition & 1 deletion build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ List of all supported builds:
Examples:
Build Windows 10 Enterprise Evaluation, Windows Server 2016 Evaluation and Windows Server 2012 Evaluation for Virtualbox:
$PROGNAME windows_10:virtualbox-iso windows_2016:virtualbox-iso windows_2012_r2:virtualbox-iso
$PROGNAME windows_10:virtualbox windows_2016:virtualbox windows_2012_r2:virtualbox
Build Windows 10 Enterprise Evaluation, Windows Server 2016 Evaluation and Windows Server 2012 Evaluation for libvirt:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,15 @@
==> virtualbox-iso: Creating virtual machine...
==> virtualbox-iso: Creating hard drive...
==> virtualbox-iso: Attaching floppy disk...
==> virtualbox-iso: Creating forwarded port mapping for communicator (SSH, WinRM, etc) (host port 3560)
==> virtualbox-iso: Creating forwarded port mapping for communicator (SSH, WinRM, etc) (host port 3953)
==> virtualbox-iso: Executing custom VBoxManage commands...
virtualbox-iso: Executing: modifyvm windows-10-enterprise-x64-eval --memory 4096
virtualbox-iso: Executing: modifyvm windows-10-enterprise-x64-eval --cpus 2
virtualbox-iso: Executing: modifyvm windows-10-enterprise-x64-eval --memory 4096
virtualbox-iso: Executing: modifyvm windows-10-enterprise-x64-eval --audiocontroller hda
==> virtualbox-iso: Starting the virtual machine...
virtualbox-iso: The VM will be run headless, without a GUI. If you want to
virtualbox-iso: view the screen of the VM, connect via VRDP without a password to
virtualbox-iso: rdp://127.0.0.1:5903
virtualbox-iso: rdp://127.0.0.1:5948
==> virtualbox-iso: Waiting 10s for boot...
==> virtualbox-iso: Typing the boot command...
==> virtualbox-iso: Waiting for WinRM to become available...
Expand All @@ -34,12 +35,12 @@
==> virtualbox-iso: Connected to WinRM!
==> virtualbox-iso: Uploading VirtualBox version info (5.2.6)
==> virtualbox-iso: Provisioning with Powershell...
==> virtualbox-iso: Provisioning with powershell script: /var/tmp/packer-powershell-provisioner377064744
==> virtualbox-iso: Provisioning with powershell script: /var/tmp/packer-powershell-provisioner022232065
virtualbox-iso: TrustedPublisher "Trusted Publishers"
virtualbox-iso: Certificate "Oracle Corporation" added to store.
virtualbox-iso: CertUtil: -addstore command completed successfully.
==> virtualbox-iso: Provisioning with Ansible...
==> virtualbox-iso: Executing Ansible: ansible-playbook --extra-vars packer_build_name=virtualbox-iso packer_builder_type=virtualbox-iso -i /var/tmp/packer-provisioner-ansible768873576 /home/pruzicka/data/github/packer-templates/ansible/win.yml -e ansible_ssh_private_key_file=/var/tmp/ansible-key602242029 --connection packer --extra-vars ansible_shell_type=powershell ansible_shell_executable=None
==> virtualbox-iso: Executing Ansible: ansible-playbook --extra-vars packer_build_name=virtualbox-iso packer_builder_type=virtualbox-iso -i /var/tmp/packer-provisioner-ansible361197015 /home/pruzicka/data/github/packer-templates/ansible/win.yml -e ansible_ssh_private_key_file=/var/tmp/ansible-key256334936 --connection packer --extra-vars ansible_shell_type=powershell ansible_shell_executable=None
virtualbox-iso:
virtualbox-iso: PLAY [all] *********************************************************************
virtualbox-iso:
Expand Down Expand Up @@ -168,7 +169,7 @@
virtualbox-iso: Removing floppy drive...
virtualbox-iso: Removing guest additions drive...
==> virtualbox-iso: Preparing to export machine...
virtualbox-iso: Deleting forwarded port mapping for the communicator (SSH, WinRM, etc) (host port 3560)
virtualbox-iso: Deleting forwarded port mapping for the communicator (SSH, WinRM, etc) (host port 3953)
==> virtualbox-iso: Exporting virtual machine...
virtualbox-iso: Executing: export windows-10-enterprise-x64-eval --output windows-10-enterprise-x64-eval-virtualbox-iso/windows-10-enterprise-x64-eval.ovf
==> virtualbox-iso: Deregistering and deleting VM...
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,27 +17,28 @@
==> virtualbox-iso: Creating virtual machine...
==> virtualbox-iso: Creating hard drive...
==> virtualbox-iso: Attaching floppy disk...
==> virtualbox-iso: Creating forwarded port mapping for communicator (SSH, WinRM, etc) (host port 3440)
==> virtualbox-iso: Creating forwarded port mapping for communicator (SSH, WinRM, etc) (host port 2800)
==> virtualbox-iso: Executing custom VBoxManage commands...
virtualbox-iso: Executing: modifyvm windows-server-2012-r2-standard-x64-eval --memory 4096
virtualbox-iso: Executing: modifyvm windows-server-2012-r2-standard-x64-eval --cpus 2
virtualbox-iso: Executing: modifyvm windows-server-2012-r2-standard-x64-eval --memory 4096
virtualbox-iso: Executing: modifyvm windows-server-2012-r2-standard-x64-eval --audiocontroller hda
==> virtualbox-iso: Starting the virtual machine...
virtualbox-iso: The VM will be run headless, without a GUI. If you want to
virtualbox-iso: view the screen of the VM, connect via VRDP without a password to
virtualbox-iso: rdp://127.0.0.1:5982
virtualbox-iso: rdp://127.0.0.1:5900
==> virtualbox-iso: Waiting 10s for boot...
==> virtualbox-iso: Typing the boot command...
==> virtualbox-iso: Waiting for WinRM to become available...
virtualbox-iso: WinRM connected.
==> virtualbox-iso: Connected to WinRM!
==> virtualbox-iso: Uploading VirtualBox version info (5.2.6)
==> virtualbox-iso: Provisioning with Powershell...
==> virtualbox-iso: Provisioning with powershell script: /var/tmp/packer-powershell-provisioner873216902
==> virtualbox-iso: Provisioning with powershell script: /var/tmp/packer-powershell-provisioner173736055
virtualbox-iso: TrustedPublisher "Trusted Publishers"
virtualbox-iso: Certificate "Oracle Corporation" added to store.
virtualbox-iso: CertUtil: -addstore command completed successfully.
==> virtualbox-iso: Provisioning with Ansible...
==> virtualbox-iso: Executing Ansible: ansible-playbook --extra-vars packer_build_name=virtualbox-iso packer_builder_type=virtualbox-iso -i /var/tmp/packer-provisioner-ansible237672528 /home/pruzicka/data/github/packer-templates/ansible/win.yml -e ansible_ssh_private_key_file=/var/tmp/ansible-key771291509 --connection packer --extra-vars ansible_shell_type=powershell ansible_shell_executable=None
==> virtualbox-iso: Executing Ansible: ansible-playbook --extra-vars packer_build_name=virtualbox-iso packer_builder_type=virtualbox-iso -i /var/tmp/packer-provisioner-ansible964476365 /home/pruzicka/data/github/packer-templates/ansible/win.yml -e ansible_ssh_private_key_file=/var/tmp/ansible-key432698534 --connection packer --extra-vars ansible_shell_type=powershell ansible_shell_executable=None
virtualbox-iso:
virtualbox-iso: PLAY [all] *********************************************************************
virtualbox-iso:
Expand Down Expand Up @@ -164,7 +165,7 @@
virtualbox-iso: Removing floppy drive...
virtualbox-iso: Removing guest additions drive...
==> virtualbox-iso: Preparing to export machine...
virtualbox-iso: Deleting forwarded port mapping for the communicator (SSH, WinRM, etc) (host port 3440)
virtualbox-iso: Deleting forwarded port mapping for the communicator (SSH, WinRM, etc) (host port 2800)
==> virtualbox-iso: Exporting virtual machine...
virtualbox-iso: Executing: export windows-server-2012-r2-standard-x64-eval --output windows-server-2012-r2-standard-x64-eval-virtualbox-iso/windows-server-2012-r2-standard-x64-eval.ovf
==> virtualbox-iso: Deregistering and deleting VM...
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,29 +17,30 @@
==> virtualbox-iso: Creating virtual machine...
==> virtualbox-iso: Creating hard drive...
==> virtualbox-iso: Attaching floppy disk...
==> virtualbox-iso: Creating forwarded port mapping for communicator (SSH, WinRM, etc) (host port 2416)
==> virtualbox-iso: Creating forwarded port mapping for communicator (SSH, WinRM, etc) (host port 2256)
==> virtualbox-iso: Executing custom VBoxManage commands...
virtualbox-iso: Executing: modifyvm windows-server-2016-standard-x64-eval --memory 4096
virtualbox-iso: Executing: modifyvm windows-server-2016-standard-x64-eval --cpus 2
virtualbox-iso: Executing: modifyvm windows-server-2016-standard-x64-eval --memory 4096
virtualbox-iso: Executing: modifyvm windows-server-2016-standard-x64-eval --audiocontroller hda
==> virtualbox-iso: Starting the virtual machine...
virtualbox-iso: The VM will be run headless, without a GUI. If you want to
virtualbox-iso: view the screen of the VM, connect via VRDP without a password to
virtualbox-iso: rdp://127.0.0.1:5958
virtualbox-iso: rdp://127.0.0.1:5984
==> virtualbox-iso: Waiting 10s for boot...
==> virtualbox-iso: Typing the boot command...
==> virtualbox-iso: Waiting for WinRM to become available...
virtualbox-iso: WinRM connected.
virtualbox-iso: #< CLIXML
virtualbox-iso: <Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04"><Obj S="progress" RefId="0"><TN RefId="0"><T>System.Management.Automation.PSCustomObject</T><T>System.Object</T></TN><MS><I64 N="SourceId">1</I64><PR N="Record"><AV>Preparing modules for first use.</AV><AI>0</AI><Nil /><PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj><Obj S="progress" RefId="1"><TNRef RefId="0" /><MS><I64 N="SourceId">1</I64><PR N="Record"><AV>Preparing modules for first use.</AV><AI>0</AI><Nil /><PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj></Objs>
virtualbox-iso: WinRM connected.
==> virtualbox-iso: Connected to WinRM!
==> virtualbox-iso: Uploading VirtualBox version info (5.2.6)
==> virtualbox-iso: Provisioning with Powershell...
==> virtualbox-iso: Provisioning with powershell script: /var/tmp/packer-powershell-provisioner450917038
==> virtualbox-iso: Provisioning with powershell script: /var/tmp/packer-powershell-provisioner328585468
virtualbox-iso: TrustedPublisher "Trusted Publishers"
virtualbox-iso: Certificate "Oracle Corporation" added to store.
virtualbox-iso: CertUtil: -addstore command completed successfully.
==> virtualbox-iso: Provisioning with Ansible...
==> virtualbox-iso: Executing Ansible: ansible-playbook --extra-vars packer_build_name=virtualbox-iso packer_builder_type=virtualbox-iso -i /var/tmp/packer-provisioner-ansible069783077 /home/pruzicka/data/github/packer-templates/ansible/win.yml -e ansible_ssh_private_key_file=/var/tmp/ansible-key045520990 --connection packer --extra-vars ansible_shell_type=powershell ansible_shell_executable=None
==> virtualbox-iso: Executing Ansible: ansible-playbook --extra-vars packer_build_name=virtualbox-iso packer_builder_type=virtualbox-iso -i /var/tmp/packer-provisioner-ansible754259029 /home/pruzicka/data/github/packer-templates/ansible/win.yml -e ansible_ssh_private_key_file=/var/tmp/ansible-key499903822 --connection packer --extra-vars ansible_shell_type=powershell ansible_shell_executable=None
virtualbox-iso:
virtualbox-iso: PLAY [all] *********************************************************************
virtualbox-iso:
Expand Down Expand Up @@ -168,7 +169,7 @@
virtualbox-iso: Removing floppy drive...
virtualbox-iso: Removing guest additions drive...
==> virtualbox-iso: Preparing to export machine...
virtualbox-iso: Deleting forwarded port mapping for the communicator (SSH, WinRM, etc) (host port 2416)
virtualbox-iso: Deleting forwarded port mapping for the communicator (SSH, WinRM, etc) (host port 2256)
==> virtualbox-iso: Exporting virtual machine...
virtualbox-iso: Executing: export windows-server-2016-standard-x64-eval --output windows-server-2016-standard-x64-eval-virtualbox-iso/windows-server-2016-standard-x64-eval.ovf
==> virtualbox-iso: Deregistering and deleting VM...
Expand Down
38 changes: 28 additions & 10 deletions templates/windows-10-enterprise-eval.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# [Windows $WINDOWS_VERSION ${WINDOWS_EDITION^} Evaluation](https://www.microsoft.com/en-us/evalcenter/evaluate-windows-${WINDOWS_VERSION}-${WINDOWS_EDITION})
## Clean and minimal Windows $WINDOWS_VERSION ${WINDOWS_EDITION^} ($WINDOWS_ARCH) Evaluation base box for [libvirt](https://github.com/vagrant-libvirt/vagrant-libvirt) and [virtualbox](https://www.vagrantup.com/docs/virtualbox/) providers.

## Clean and minimal Windows $WINDOWS_VERSION ${WINDOWS_EDITION^} ($WINDOWS_ARCH) Evaluation base box for [libvirt](https://github.com/vagrant-libvirt/vagrant-libvirt) and [virtualbox](https://www.vagrantup.com/docs/virtualbox/) Vagrant providers

---

Expand All @@ -12,19 +13,26 @@
* [QEMU-KVM](https://en.wikibooks.org/wiki/QEMU/Installing_QEMU)
* [Vagrant](https://www.vagrantup.com/downloads.html)
* [Vagrant Libvirt Plugin](https://github.com/pradels/vagrant-libvirt#installation)
* [VirtualBox](https://www.virtualbox.org/)


## Requirements for Linux distributions
Unfortunately you can not use the vagrant package provided by your Linux distribution (at least for Fedora / Debian).
Both distributions doesn't support naively [Ruby library for WinRM](https://github.com/WinRb/WinRM).
## Requirements for linux distributions running Vagrant
Unfortunately you can not use the Vagrant package provided by your Linux distribution (at least for CentOS / Fedora / Debian).
These distributions doesn't support naively [Ruby library for WinRM](https://github.com/WinRb/WinRM) needed by Vagrant for "talking" to Windows.
Luckily [WinRM communicator](https://github.com/mitchellh/vagrant/tree/master/plugins/communicators/winrm) including the Ruby WinRM library is part of official Vagrant package.
You will also need the latest version of [Vagrant Libvirt Plugin](https://github.com/pradels/vagrant-libvirt#installation) supporting [libvirt channels](https://libvirt.org/formatdomain.html#elementCharChannel) option and which is usually not part of the distributions.
You will also need the latest version of [Vagrant Libvirt Plugin](https://github.com/pradels/vagrant-libvirt#installation) supporting [libvirt channels](https://libvirt.org/formatdomain.html#elementCharChannel).

Here are the steps for latest Fedora how to install Vagrant from the official web pages:
\`\`\`
dnf remove vagrant
dnf install -y libvirt-daemon-kvm qemu-kvm libvirt-devel

dnf install -y https://releases.hashicorp.com/vagrant/2.0.2/vagrant_2.0.2_x86_64.rpm

# virtualbox
dnf install -y virtualbox

# libvirt only
dnf install -y libvirt-daemon-kvm qemu-kvm libvirt-devel
vagrant plugin install vagrant-libvirt
\`\`\`

Expand All @@ -38,6 +46,8 @@ mkdir ${NAME}
cd ${NAME}
vagrant init ${USER}/${NAME}
VAGRANT_DEFAULT_PROVIDER=libvirt vagrant up
# or
VAGRANT_DEFAULT_PROVIDER=virtualbox vagrant up
\`\`\`


Expand All @@ -49,17 +59,22 @@ VAGRANT_DEFAULT_PROVIDER=libvirt vagrant up

## VM Specifications

Drivers / Devices added for the VMs for specific providers.

### Libvirt
* Libvirt Provider
* VirtIO dynamic Hard Disk (up to 50 GiB)
* VirtIO Network Interface
* QXL Video Card (SPICE display)
* Channel Device (com.redhat.spice.0)

### VirtualBox
* SATA Disk


## Configuration

#### Minimal installation - see the [Autounattend file](https://github.com/ruzickap/packer-templates/blob/master/http/windows-${WINDOWS_VERSION}/Autounattend.xml)

* UTC timezone
* IEHarden disabled
* Home Page set to "about:blank"
Expand All @@ -71,15 +86,16 @@ VAGRANT_DEFAULT_PROVIDER=libvirt vagrant up
* New Network Window turned off
* Administrator account enabled
* EnableLUA
* Windows image was finalized using \`sysprep\`: [unattended.xml](https://github.com/ruzickap/packer-templates/blob/master/scripts/win-common/unattend.xml)

#### Additional Drivers installed (needed by libvirt) - [VirtIO](https://fedoraproject.org/wiki/Windows_Virtio_Drivers)

#### Additional Drivers installed for libvirt boxes - [VirtIO](https://fedoraproject.org/wiki/Windows_Virtio_Drivers)
Installed during installation:
* NetKVM: VirtIO Network driver
* qxldod: QXL graphics driver
* viostor: VirtIO Block driver (VirtIO SCSI controller driver)

Installed when the OS is installed via Ansible playbook [win.yml](https://github.com/ruzickap/packer-templates/blob/master/ansible/win.yml):
Installed components via Ansible playbook [win.yml](https://github.com/ruzickap/packer-templates/blob/master/ansible/win.yml):
* vioscsi: Support for VirtIO SCSI pass-through controller
* Balloon: VirtIO Memory Balloon driver
* viorng: VirtIO RNG Device driver
Expand All @@ -88,7 +104,9 @@ Installed when the OS is installed via Ansible playbook [win.yml](https://github
* pvpanic: QEMU pvpanic device driver
* qemu-ga: [Qemu Guest Agent](http://wiki.libvirt.org/page/Qemu_guest_agent)

Image was finalized using sysprep with [unattended.xml](https://github.com/ruzickap/packer-templates/blob/master/scripts/win-common/unattend.xml).

#### Additional Drivers installed for virtualbox boxes
* VirtualBox Guest Additions


## Thanks to...
Expand Down
Loading

0 comments on commit 8d03d3f

Please sign in to comment.