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
40G
required 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=falseUpdate
[win2k12r2]
with desired editions(standard and core).[win2k12r2] enabled=true editions=standard coreExecute
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=coreUpdate
[win2k12r2]
with desired edition(core).[win2k12r2] enabled=true editions=coreExecute
runme.sh --run