Deploying Windows Hosts Guide

This usage guide helps you deploy hosts running Microsoft Windows. orcharhino can deploy hosts running Windows 10 Pro, Windows Server 2016, and Windows Server 2019.

Prerequisites and Used Tools

You require the following tools and files to create an installation media for windows:

Extracting VMware Drivers

  1. Download the VMware tools and open the .iso file in a virtual drive.

  2. Create a directory, for example C:\Extract, where you want to extract the VMware tools into.

  3. Open a Powershell and change into the virtual drive.

  4. Run .\setup.exe /A /P C:\Extract with the last parameter being the directory you’ve extracted the VMware tools into.

  5. Follow the installation via GUI and set the installation path to the second path. You find the required drivers in C:\Extract\VMware\VMware Tools\VMware\Drivers as defined in the second step.

Creating a Windows Image

  1. Clone the https://github.com/UXabre/WIMan.git repository to your local machine running Windows.

  2. Navigate to the local git repository and create a folder under sources\amd64\ for each desired operating system. There is already a directory for Windows Server 2016.

  3. Copy the .iso file of the operating system to the corresponding folder.

  4. Create a new directory drivers under winpe and copy the VMware drivers into it.

  5. Open a Powershell with administrator privileges and navigate to the local git repository.

  6. Create Windows image using the following command:

    .\GenerateWIM.ps1

TFTP Extension

orcharhino requires ipxe.lkrn to be present in the TFTP directory to boot hosts running Windows.

  1. Download this file from boot.ipxe.org/ipxe.lkrn.

  2. Copy ipxe.lkrn using scp from your local machine to root@orcharhino.example.com:/var/lib/tftpboot/.

Uploading ISO File

To create an installation media, you must first upload the .iso file to your orcharhino instance and then create an installation media entry.

  1. Copy the directory {local git repository}\finalized\amd64\{version} to your orcharhino to /var/www/html/pub/installation_media/windows/{version}.

  2. Copy the directory {local git repository}\winpe\drivers to your orcharhino to /var/www/html/pub/installation_media/windows/{version}.

    You can freely choose the directory structure after /var/www/html/pub/.

You can now reach the files via HTTP, for example http://orcharhino.example.com/pub/installation_media/windows/2016/.

Creating an Installation Media Entry

Navigate to Hosts > Installation Media and click the Create Medium button.

Creating an installation media
  • Enter a Name (1).

  • Enter the Path (2) to the installation media on your orcharhino.

    The path must start with http. Provisioning via HTTPS is not supported.

  • Select Windows from the Operating System Family drop down menu (3).

  • (Optional) Select an organisation and location context.

  • Click Submit (4) to save your input to orcharhino.

Creating an Operating System Entry

Navigate to Hosts > Operating Systems and click the Create Operating System button.

Creating an operating system
  • Enter a Name (1).

  • Enter the Major Version (2) for your Windows host. This example uses Windows Server 2016, which makes the major version 2016.

  • Leave the Minor Version field (3) empty.

  • (Optional) Add a Description (4).

  • Select the Family (5) of the operating system, i.e. Windows.

  • Select the Root Password Hash (6), i.e. Base64-Windows.

  • In the Architectures (7) field, select the proper architecture.

Associate the proper partition table on the Partition Table tab:

Creating an operating system
  • Select the Windows Default Partition Table.

    If the partition table does not appear in the list, ensure it is associated to the proper organisation and location context.

Add the previously created installation media entry for Windows Server 2016 local in the Installation Media tab:

Creating an operating system

Create the following parameters on the Parameters tab:

Creating an operating system
  • Add the wimImageName parameter of type string and value Windows Server 2016 SERVERSTANDARD.

    You can find the proper ImageName for each operating system in the images.ini file. The file is located at {local git repository}\finalized\amd64\2016\sources\.

Click the Submit button to save the operating system entry to orcharhino.

Creating an Architecture Entry

Create an architecture with the name x86_64 if it’s not already present.

  1. Navigate to Hosts > Architectures.

  2. Click the Create Architecture button.

  3. Enter the name x86_64.

  4. Associate it to the previously created operating system entry.

Associating Provisioning Templates

Associate the provisioning templates to the newly created operating system entry for Windows.

  1. Navigate to Hosts > Provisioning Templates.

  2. Repeat the following procedure for each template:

    1. Select the Windows default finish template and navigate to the Association tab.

    2. Select the newly created operating system entry for Windows and associate it with the provisioning template.

      If a template does not appear in the list of provisioning template, ensure it is associated to the proper organisation and location context.

Creating a Host Group

Navigate to Configure > Host Groups and click the Create Host Group button.

Enter a name and set the deploy on and compute profile options.

Creating a host group
  • Select the proper Architecture (1).

  • Select the previously created Operating System (2).

  • Choose All Media from the Media Selection menu (3).

  • Select the previously created Media (4).

  • Select the Windows Default Partition Table Partition Table (5).

  • In the PXE loader (6) drop down menu, select the PXELinux BIOS item.

  • If desired, set a Root Password (7). If empty, each host must receive a root password ahead of provisioning.

  • Click Submit (8) to create a new host group. Settings on other tabs are optional.

Deploying Windows Hosts

  1. Navigate to Hosts > Create Hosts.

  2. Click on the Create Host button.

  3. Select the previously created host group for Windows

  4. Adjust other settings as necessary.

  5. Click Submit.

You can now deploy virtual machines running Windows both boot disk based as well as network based. You can use static IP addresses when deploying hosts via boot disk.

Additionally, you can deploy image based hosts on VMware for which you need to create an image using the VMware tools and the Windows user data template.

Optional Host Parameters

You can optionally set the following parameters when provisioning hosts:

Variable Default Value Note

ansible_port

Port to access VM via Ansible (5985)

ansible_ssh_pass

Password to access VM via Ansible

ansible_user

User account to access VM via Ansible; defaults to administrator if no user is selected

computerDomain

Domain if domain join is required

computerOU

Organization Unit if domain join is executed; defaults to the default OU of the connected AD if empty; must use distinguishedName

create_ansible_user

Create the ansible_user as a local admin or AD account as part of the local admin group?

domainAdminAccount

Administrator user account for joining a domain; must use pre-Windows 2000 login (Domain\User)

domainAdminAccountPasswd

Administrator account password for joining a domain; non alphanumeric characters are known to cause issues

EnableFirewall

Enable the firewall?

foremanDebug

false

Save log files on the VM after deployment

hide_server_manager

Show server manager when logging in to Windows Server?

http-proxy

Global HTTP proxy if required

http-proxy-port

global HTTP proxy port; is required if HTTP proxy is set

inputLocale

de-DE

Keyboard layout after booting the VM; popular alternatives are en-GB and en-US

localAdminAccountDisabled

false

Disabling the default local administrator account?

machinePassword

Password for unsafe domain join

network_location

private

Network profile association; required if there is no domain join, else there are issues with winrm

ntpServer

NTP server; required if the VM cannot access the internet or the DNS or DHCP server does not provide NTP

ping

Create a firewall rule to allow ICMP?

remote_desktop

Create a firewall rule to allow remote_desktop?

systemLocale

en-US

Language of the VM

systemTimeZone

GMT Standard Time

Time zone of the VM

systemUILanguage

en-US

System UI language

win_puppet_source

Path to the Puppet .msi file if Puppet is enabled

windowsLicenseKey

Windows license key

windowsLicenseOwner

Windows license key owner

You can only connect to the VM via Ansible on Port 5895 using basic auth.