MS Windows image builder for OpenStack Murano¶
Introduction¶
This repository contains MS Windows templates, powershell scripts and bash scripted logic used to create qcow2 images for QEMU/KVM based virtual machines used in OpenStack.
MS Windows Versions¶
Supported by builder versions with en_US localization:
- Windows 2012 R2 
- Windows 2012 R2 Core 
- Windows 2008 R2 
- Windows 2008 R2 Core 
Getting Started¶
Trial versions of Windows 2008 R2 / 2012 R2 used by default. You could use these images for 180 days without activation. You could download evaluation versions from official Microsoft website:
System requirements¶
- Debian based Linux distribution, like Ubuntu, Mint and so on. 
- Packages required: - qemu-kvm virt-manager virt-goodies virtinst bridge-utils libvirt-bin uuid-runtime samba samba-common cifs-utils
- User should be able to run sudo without password prompt! - sudo echo "${USER} ALL = NOPASSWD: ALL" > /etc/sudoers.d/${USER} sudo chmod 440 /etc/sudoers.d/${USER} 
- Free disk space > 50G on partition where script will spawn virtual machines because of - 40Grequired by virtual machine HDD image.
- Internet connectivity. 
- Samba shared resource. 
Configuring builder¶
Configuration parameters to tweak:
[default]
- workdir- place where script would prepare all software required by build scenarios. By default is not set, i.e. script directory would used as root of working space.
- vmsworkdir- must contain valid path, this parameter tells script where it should spawn virtual machines.
- runparallel- true of false, false set by default. This parameter describes how to start virtual machines, one by one or in launch them in background.
[samba]
- mode- local or remote. In local mode script would try to install and configure Samba server locally. If set to remote, you should also provide information about connection.
- host- in local mode - is 192.168.122.1, otherwise set proper ip address.
- user- set to guest by default in case of guest rw access.
- domain- Samba server user domain, if not set host value used.
- password- Samba server user password.
- image-builder-share- Samba server remote directory.
MS Windows install preparation:
[win2k12r2] or [win2k8r2] - shortcuts for 2012 R2 and 2008 R2.
- enabled- true of false, include or exclude release processing by script.
- editions- standard, core or both(space used as delimiter).
- iso- local path to iso file
By default [win2k8r2] - disabled, if you need you can enable this release in config.ini file.
Run¶
Preparation¶
Run chmod +x *.sh in builder directory to make script files executable.
Command line parameters:¶
runme.sh - the main script
- --help- shows usage
- --forceinstall-dependencies- Runs dependencies install.
- --check-smb- Run checks or configuration of Samba server.
- --download-requirements- Download all required and configures software except MS Windows ISO.
- --show-configured- Shows configured and available to use MS Windows releases.
- --run- normal run
Experimental options:¶
- --config-file- Set configuration file location instead of default.
Use cases¶
All examples below describes changes in config.ini file
- I want to build one image for specific version and edition. For example: version - 2012 R2 and edition - standard. Steps to reach the goal: 
Disable
[win2k8r2]from script processing.[win2k8r2] enabled=false
Update
[win2k12r2]with desired edition(standard).[win2k12r2] enabled=true editions=standard
Execute
runme.sh --run
- I want to build two images for specific version with all supported by script editions. For example: 2012 R2 and editions - standard and core. Steps to reach the goal: 
Disable [win2k8r2] from script processing.
[win2k8r2] enabled=false
Update
[win2k12r2]with desired editions(standard and core).[win2k12r2] enabled=true editions=standard core
Execute
runme.sh --run
- I want to build two images for all supported by script versions with specific editions. For example: versions - 2012 R2 and 2008 R2 and edition - core. Steps to reach the goal: 
Update
[win2k8r2]with desired edition(core).[win2k8r2] enabled=true editions=core
Update
[win2k12r2]with desired edition(core).[win2k12r2] enabled=true editions=core
Execute
runme.sh --run
