Version 1.1 of the PureApplication System was announced on April 26, 2013. There are a number of key enhancements in this release, but the one I will focus on now is the introduction of the support to build and deploy Windows patterns. Up until now, the key operating system on the W1500 ( the intel based machine) was RedHat Linux. The IBM Middleware Hypervisor images used it, and there was even a CORE OS image which was just RedHat provided. Of course you could create your own custom images using the IBM Image Construction and Composition Tool (ICCT) but even so you needed to be using RedHat Linux.
And, to be clear, you can still create RedHat custom images today. Whether you use extend/capture or create an image in the ICCT and import it, it can still be done. However, up until now there was no option to use the Windows operating system. This has changed, and below I will take you through the steps to successfully create a Windows image on PureApplication V1.1.
This blog post does assume that you know how to create new virtual machines in the VMWare vSphere client and that the ICCT has been setup already and an ESX Cloud Provider is configured. One thing worth noting is that, at the time of writing this, the only supported version of ICCT for this activity is to be found as a download option on the PureApplication console. You *could* provision the ICCT on the PureApplication system since it's a Virtual Application, but I personally wanted to install it on another machine... so I did!
There is a mass of information on the web about these topic areas if you need to read up on them.
So, first things first. IBM does NOT ship Microsoft Windows with the PureApplication System. It WILL support Windows as I've mentioned but you need to create the Windows image and import it into the PureApp. To create the base image you will need to use the ICCT.
There are essentially six steps that you need to complete in order to get a Windows OS image into the PureApplication system.
1) Create a Windows virtual image in your own VMWare ESX environment
2) Import the running VM into the ICCT
3) Extend this image, add software bundles and synchronize
5) Export to a file server
6) Upload the image into PureApplication so that it can be used as part of a pattern
Let's cover the steps one by one....
STEP 1 : Create a running Windows VM
The following two versions of Windows are supported :
Microsoft Windows 2008 Server R2 SP1 (64bit)
Microsoft Windows 2012 (64bit)
Using the vSphere Client create a new virtual machine. There are no gotchas or deviations from the norm here. Just set aside enough disk space and connect the Windows ISO image to boot at startup. Install Windows normally using the console.
Once installed you will need to configure a few things.
1) Configure the IP address
2) Turn Remote Dekstop on. I find this useful as I can then use an RDP Client and not worry about the VMWare Virtual Console in the vSphere client
3) Check SERVICES and ensure that the REMOTE REGISTRY SERVICE is set to run automatically. For Windows 2012 I had more success setting this service to an automatic delayed start rather than a trigger start
4) Either turn off the Windows firewall or create a port 445 inbound allow rule
5) Disable User Account Control through Regedit
Find the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
a. If the LocalAccountTokenFilterPolicy registry entry does not exist, create it. Right-click
the right panel >> click New >> DWORD value.
b. Enter LocalAccountTokenFilterPolicy and then press Enter.
c. Right-click LocalAccountTokenFilterPolicy, and click Modify.
d. In the Value data field, type 1, and click OK.
6) Install VMTools
7) Reboot! The reboot is essential for completing the install of VMTools and for the Regedit modifications
STEP 2 - Import the running vm into the ICCT
Now that the Windows image is ready, we need to grab this and use it as our Base Image. To do this we have to "create image from a running VM". Some folks have referred to this as "kidnapping", but as I've posted before I prefer the term "spider bite". The virtual machine is contacted, the activation engine injected then the image is sucked into ICCT leaving an empty shell which can be discarded after use. Sounds more like a spider bite to me...!
So, elect to create an image from a running virtual machine and enter the necessary credentials.
Once the image is created we have our base image. It's not complete yet though because not all necessary bundles are installed.
STEP 3 - Extend this image, add software bundles and synchronize
Click on the "extend" button to extend the image. Specify a new name and version.
Now click on Edit and add the "Enablement Bundle for Virtual Applications and System Plugins on Windows". Once added, you will have the following :
So, at synchronization time there are two bundles to be added.
Now add a new personality. A personality is a set of custom configuration settings for a subset of software bundles in a virtual image. All the software bundles defined for the image are always installed, even if they are not in the personality that is used. During deployment, only the software bundles that are included in the personality are configured, according to the deployment parameters specified in the personality.
Delete the old personality (the OS Part) and click Add Personality. Ensure that all tick boxes are ticked as shown below.
Finally, add a License. Untwist the License twisty and click Add License. Select a TXT file that contains your Windows License. Click Add.
Save your changes and then click Done Editting.
You're all ready to synchronize so click on Synchronize. Enter a valid product key and also the ID and PWD for the Windows machine. Wait until the green tick appears next to your extended image.
One thing worth pointing out now is that you can, if you wish, add additional software bundles of your own before synchronizing. If you have a requirement for certain software on the base OS image, e.g. Antivirus, you could always create a software bundle to install it rather than a script packge later in the PureApplication. Similarly once the synchronization is complete you could RDP in and install software manually. Either way, it can be done if you wish.
Once the image has synchronized and you have made any changes you want to make, you can capture it.
STEP 4 - Capture
Just click on the capture button to capture the image..... it really IS that simple!
STEP 5 - Export to a file server
Click Export and complete the pop up window to export to a file server. This is standard ICCT procedure.
Before you click Ok, make sure that the OVA file format is set as shown.
STEP 6 - Upload the image into PureApplication so that it can be used as part of a pattern
Once the export is complete log on to the PureApplication System. Select the Workload Console if you aren't there already and then Catalog >> Virtual Images.
Click the green "+" to add a new image.
Enter the information as shown below. Remember you can use SCP or HTTP.
Accept the license once uploaded and you are ready to go!
If you now create a new Virtual System Pattern, for example, the Windows image will be visible as a pattern part for you to use.
At deploy time the options are very similar to other pattern parts, but you will be asked to provide a Windows Product Key.
And there you go.... Windows on PureApplication System.
Most of this is "business as usual" when it comes to creating a virtual image for use on the PureApplication.
However, there are some things to be aware of when preparing the Windows image and when extending it.
My Personal Experiences
Here are a couple of things I fell foul of....
1) Setting Triggered Start for the Remote Registry service meant that it was not started automatically. This prevented ICCT from synchronizing the extended image. I used Delay Start in Windows 2012 which worked fine.
2) I created a Windows Test Bundle and attached that to the Windows base image I extended. It seemed ok until deploy time on the PureApplication. For some reason (probably user error on my part) the Config.bat file of my Test Bundle never executed correctly. The virtual machine deployed fine and I could RDP in, but the IP V6 internal connection to the PureApplication never configured correctly. This left the PureApplication trying to connect to an instance that it couldn't reach.
com.ibm.tivoli.remoteaccess.SSHProtocol beginSessionImpl [fd8c:215d:178e:666:250:56ff:fe91:368e] CTGRI0001E The application could not establish a connection to fd8c:215d:178e:666:250:56ff:fe91:368e
My advice, for what it's worth, is don't bother with software bundles at this stage unless you absolutely need them!
3) I downloaded the ICCT and installed onto RedHat Linux. You will also need the mkisofs code to allow ICCT to export the OVA. "yum install mkisofs" should solve this problem.
com.ibm.venture.vmware.appliance.actions.StageVA call Error staging Win2008
java.io.IOException: Cannot run program "mkisofs": java.io.IOException: error=2, No such file or directory
4) ESX V5 needs a patch installed when working with Windows 2012.
If building Windows Server 2008 R2 SP1, you can use:
- ESX V4.0, V4.1
- ESXi V4.0, V4.1, V5.0 Update1 Fix 4 or higher
If building Windows Server 2012, you must use:
- ESXi V5.0 Update 1 Fix 4 or higher