THIS REPOSITORY HAS BEEN DEPRECATED IN FAVOR FOR ORIGINAL wimaging
Provision Windows hosts with Foreman
wimaging-ng
a set of scripts to prepare WIM images and templates for Foreman to provision Windows hosts.
Except for the boot process official Microsoft deployment tools are used; most notably dism.exe
.
All relevant configuration files like unattend.xml
are rendered by Foreman and downloaded at build time.
- Linux style installation using
http://
orftp://
installation media - No extra servers like WDS needed - all relevant settings can be configured in Foreman directly
- Official Mircosoft utilities are used for all relevant setup stages making it easy to add (future) operating systems
- Driver installation during build time
- Support for localization settings (like time zone, locale, UI language)
- Optional domain join including target OU
- Optional local user creation
- Support for Foreman's root password using Base64 encoding
- Optional software installation and user tasks at the end of the build (like installing puppet ect)
Requirements for using wimaging-ng, they are not covered in this guide.
- A working Foreman version 1.8+ installation (obviously), capable of net booting clients along with a working DNS / DHCP infrastructure
- Currently, Safe Mode Render must be disabled in foreman
- A utility Windows VM or physical host to prepare the WIM images (Microsoft likes the term Technician Computer)
- A file server serving http and/or ftp protocols; fast machine recommended for production
- Installation media for each Windows version
- Driver files (
.inf
) you want to inject - A VM / bare metal machine to test your setup (start with VMs ;)
The tasks can be broken down in two steps:
An outline of the process to better understand the tasks witch need to be done. Basically, there are three phases:
- Create a new host in Foreman.
Simple as that. For Bare Metal hosts Foreman discovery is recommended.
- PXE / wimboot boots customized boot.wim (winpe)
- Winpe downloads the script
foreman_url('script')
; executes it: - Drive 0 is cleaned, partitioned and mounted using foreman partition table (simple
diskpart
script) install.wim
is downloaded via http/ftp and applied usingdism.exe
unattend.xml
(foreman_url('provision')
) is download and applied usingdism.exe
- Drivers are download and added using
dism.exe
- Required tools are added to the new host (most prominently
wget
) - Optionally, download extra software (like puppet)
- Optionally, domain join script (
foreman_url('user_data')
) - The finish script (
foreman_url('finish')
) is download and 'armed' - reboot to new OS
- Windows native finish tasks are done ('starting devices...')
- The finish script gets called by
SetupComplete.cmd
- Set the time server; sync time
- Optionally, the local administrator account is activated
- Optionally, join domain
- Optionally, execute extra scripts (eg, install puppet)
- Securely cleanup (sensitive) scripts using
SDelete.exe
- Reboot the host; ready for further configuration by Puppet, SCCM ect.
wimaging-ng
is a fork of wimaging. Many thanks to Dmitry Kireev, the original author.
SDelete and other PStools by SysInternals are the work of Mark Russinovich.
Other licenses: