Creating a Nested Virtualization Lab on VMware 5.5

For my new lab I am using an old HP Z200 workstation with a Quad Core Xeon processor and 16GB RAM. For storage I have 1 SSD and 2 SATA disks.  After turning on Hyper threading in the BIOS I have 8 logical cores available in VMware.

1. Install VMware onto your physical host, assign a static IP address, setup a password etc

2. Browse to the IP address in a browser and download the vSphere client.

3. Connect to the host with the client and go to Configuration/Security Profile

4. Click on Properties in the upper right corner and you will get the a popup with all the services on this ESXi host. Select the SSH service and press the Options button.

services1

5. Select ‘Start and stop with host’ and then press start.

ssh-startup

5. Download and install Putty then SSH to your ESX host. Login as root.

Putty

6. Next we need to update the vmwareconfig file, inserting a couple of lines to allow the nesting of virtual hypervisors and installation of Microsoft Hyper-V.

echo ‘vhv.allow = “TRUE”‘ >> /etc/vmware/config
echo ‘hypervisor.cpuid.v0 = “FALSE”‘ >> /etc/vmware/config

We can run a cat command to verify the lines were inserted

cat /etc/vmware/config

cat

We should now be ready to install our nested Hypervisors!

7. Create and new VM with these settings:

Virtual machine version 8
4GB RAM
2 CPUs
Operating system set to ‘Other (64-bit)’
4 NICs (one connected to management network and the rest connected to trunk network with all vlans)
20 GB thin provisioned disk

check ‘edit the virtual machine settings before completion’ then press continue

vmconfig
Connect your VMware ISO file to the CD drive and check ‘connect at power on’ then finish.

ISO
Now, I had some issues getting the next bit to work. ESX would install but I couldn’t install any 64bit hosts. I thought at first my processor didn’t support it as I was getting these errors:

hardware error
I checked in the BIOS, but couldn’t find anything. When I tried to install a x64 VM I got this error:

Failed to start the virtual machine.
This virtual machine is configured for 64-bit guest operating systems. However, 64-bit operation is not possible.
This host does not support Intel VT-x.
For more detailed information, see http://vmware.com/info?id=152.

In the end this is how I got it working:

8. Power on the VM. Wait a few seconds then turn it off. Similar to the physical host we need to insert the vhv line into the config

Browse the file system until you can find the  .vmx file for the VM. Insert the vhv.allow line into the file

browse
9. Start the machine again and it should complete with no errors and 64 bit hosts should install nicely.

nestedx64
Reference material:
http://www.vcritical.com/2011/07/vmware-vsphere-can-virtualize-itself/
http://www.virtuallyghetto.com/2011/07/how-to-enable-support-for-nested-64bit.html
https://communities.vmware.com/docs/DOC-8970

Give users permission to call on behalf of a Response Group

Now you may get a request to allow users to call from response group in Lync. I did a bit of research on this and according to Microsoft it is possible, but I have found it doesn’t work by default.

http://office.microsoft.com/en-gb/communicator-help/answer-and-make-calls-for-a-response-group-in-lync-2010-HA101834781.aspx

The reason it doesn’t work is that by default response groups do not have any voice policy. Voice Policies determine if a user is allowed to call or not. To apply the policy we need to do a bit of Powershell!

1. Open Lync control panel/Response Groups/Group and go into the group to add any users you want to give access to.

2. Click on the “Workflow” tab then “Create or edit a workflow”.

3. Edit the workflow and make sure that “Enable Agent Anonymity” is checked (you can’t call from a response group without this).

agent anon

4. Open Lync Management Shell on your client machine or Lync Server and run the following command to get a list of response groups:

Get-CsApplicationEndpoint

5. Then you can run this to find out what the voice policy of a specific group is:

Get-CsApplicationEndpoint -Identity “Response Group Name” | Format-List -Property VoicePolicy

This should return back that no voice policy is assigned.

policy

6. We now need to give the response group a policy.

Get-CsApplicationEndpoint -Identity “Response Group Name” | Grant-CsVoicePolicy -PolicyName “Voice Policy Name”

7. Now check the policy was applied:

Get-CsApplicationEndpoint -Identity “Response Group Name” | Format-List -Property VoicePolicy

policy2

We should now have the permission to call on behalf of a response group. To test open Lync client and right click a user to see the call options:

lync client

Cannot Install Exchange 2013 on Windows 2012

This weekend I decided to install Exchange 2013 in the lab. A number of things I am working on in the Lab require email capabilities and I wanted to see what the new version has to offer.

I installed a new VM with Windows Server 2012, joined it to the domain, ran the installer then I came across this error:

Error:
The Active Directory schema isn’t up-to-date, and this user account isn’t a member of the ‘Schema Admins’ and/or ‘Enterprise Admins’ groups.
For more information, visit: http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.SchemaUpdateRequired.aspx

install error

Now this error didn’t make a lot of sense to me as I knew I was a member of the ‘Schema Admins’ & Enterprise Admins’ Groups, but the installer kept repeating the same error. I tried to install under the default Enterprise Admin account and running setup.exe /preparead, but nothing worked. This was the first Exchange server in a new domain so I assumed it didn’t like the fact the domain wasn’t prepared.

For a work around I installed just the management tools first. This ran the setup.exe /preparead properly.

setup completed

Next I went to AD and added my user to the ‘Organisation Management’ group.

Make sure you check Advanced Features to view the Exchange groups
Make sure you check Advanced Features to view the Exchange groups

Now I went back to my server and ran the installer again selecting  both ‘Client Access’ & ‘Mailbox’ roles. I no longer got the ‘Schema Admins’ error.

prereqs

Finally I need to download the UCMA runtime and the Office 2010 Filter packs.
After installation the prerequisites were satisfied and I could finally install Exchange!
setup completed

I don’t know about you, but that seemed a pain for such a simple task? I thought installing Exchange was supposed to be getting easier?

Configuring a SQL Server to store session state data

To configure your session state database Microsoft has created a command line tool which will create the database for you. You can find the tool in the .NET framework folder. You must use the tool which corresponds to the framework version you are using. In my case I am using .NET 4.0 64 bit.

1. Browse to this location:

C:\Windows\system32>cd  C:\Windows\Microsoft.NET\Framework64\v4.0.30319

2. Run these commands substituting ‘ServerName’ for the SQL server you wish to create the database on:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regsql.exe -S ServerName -E -ssadd -sstype p
Microsoft (R) ASP.NET SQL Registration Tool version 4.0.30319.33440
Administrative utility to install and uninstall ASP.NET features on a SQL server
.
Copyright (C) Microsoft Corporation. All rights reserved.

Start adding session state.

..

Finished.

3. You Should now see a new database appear on the SQL Server

ASP STATE

Once you have the database in place you can configure IIS to save the sessions in the database.

The Development team will need to update the web.config file to use the SQL server:

Using default security:
<sessionstate mode="SQLServer" timeout="20" allowcustomsqldatabase="true" 
sqlconnectionstring="Data Source=Server;User ID=UserID;Password=Password;" 
cookieless="false">

Using Windows authentication:
<sessionstate mode="SQLServer" timeout="20" allowcustomsqldatabase="true" 
sqlconnectionstring="Data Source=Server;Integrated-Security=SSPI;" 
cookieless="false">