Edit: I’ve decided that, since I’ve changed the set-up to house it all within the ESXi host, and have updated to ESXi 6.7u2 I’ll do a fresh blog post detailing the changes I’ve made and discuss the setup options for CUCM/CUC for lab based on v12.5(1). If there’s interest, I’ll put up a companion video.



Here we go. Setting up a home lab for vCSA, ESXi and Windows Server for DNS. This is the guide I created, and steps I followed to get the very beginnings of my home lab set up. This won’t work for everyone as I understand most of us don’t run around with overblown home systems, but I do know some folks that don’t have servers sitting around and only have their gaming machines available for lab work.

Similarly I am in a situation where I can’t just go dumping hundred(s) of dollars into lab equipment in order to lab. I just can’t. I’ve had conversations with a few colleagues and friends on how it could be done but it would take long enough to get what I need that it just wouldn’t be worth it. My solution to this is to use the PC I have set up at home (which arguably is overblown for it’s use, but makes it quite flexible) in order to run a lab if and when I want to test something.

This lab setup makes use of VMWare Workstation 14/15, and utilizes the hardware I have in my home PC in order to split up resources and get the most bang for my buck without having to spend additional money.

In this post we’ll go over some preliminary information, install and look at the Network Editor within VMWare Workstation, and also install the Windows server and set up DNS services, Host and PTR records. We’ll follow this up with the ESXi and vCSA installs.

Requirements:

Now these aren’t hard requirements, but the more resources you have available the more you have to play with. Here’s what I’ve got that’s relevant to the build — storage, CPU and memory capacity:



Ryzen 1700x (8c/16t)

32GB 2666mhz RAM (DDR4)

2x 1TB Storage Drives

This lets me split up one, or both of the TB drives if I want to for VM space, I have 16 threads to allocate out to VMs. If I modify the ISO to install on anything I can even trim down the cpu/mem/storage allocated to a CallManager or Unity node without it complaining on install (it’s lab anyway, so I don’t care THAT much about performance).

Quick Note:

Working directory for me while setting up this lab is E:\VirtualMachines\ as this is where my VMs are stored. Each VM should be in its own folder.

Example:

ESXi 6.5 VM – E:\VirtualMachines\ESXi\

vCSA 6.5 VM – E:\VirtualMachines\vCSA\

Win2012R2 VM – E:\VirtualMachines\Win2012R2\

This keeps .vmdk, .vmx, etc. files separate and prevents any issues between the VMs, and is easier for disk management purposes.

Working IP Address space for me is 10.255.255.X 255.255.255.0. I will be using .162, .163, and .164 for these VMs.

Example:

ESXi – 10.255.255.162

vCSA – 10.255.255.163

Win2012R2 (DNS) – 10.255.255.164

Setting up VMware Workstation 14

The download and install process for VMWare Workstation 14 is extremely straight forward and does not warrant a separate doc. You can download a trial of the software from VMWare.

https://www.vmware.com/products/workstation-pro.html

The exception being the Virtual Network Editor.

Once installed, navigate to the following Edit > Virtual Network Editor Change Settings Confirm only vmnet0 exists, and is bridged. This is default.



This can be used to create new “networks”, which will create VMnetX. It is useful to create a new network, such as 10.1.1.0/24 and inject a Virtual Adapter into your Host OS for access in to that subnetwork. It’s not required for this setup, but can be used to add separate networks for: Storage, VMs, or even vMotion.

Click OK and close it out.

Setting up DNS on Win 2012 R2

File > New Virtual Machine Typical Installer disc image file (iso): %USERPROFILE%\Downloads\?WinServ2012_r2.iso (or relevant iso location)File > New Virtual Machine Version of Windows to Install Windows Server 2012 R2 Standard Full Name <user defined> Password/Confirm <user defined> Hit Next w/o a CD-Key — Click Yes VM Name <user defined> Location <user defined> I stored this in E:\VirtualMachines\Win2012R2 Size 60GB Store as a Single Disk Customize Hardware Change Network Adapter 0 NAT –> Bridged Save Power On

Windows Server 2012 R2 Install Window will pop up saying “Installing Windows”, the below is done automagically as with any Windows install.



VMWare tools should install by default when done. If they don’t, follow normal process to mount the VMWare tools iso and install the driver package.

Configure Windows 2012 R2 Network Connectivity An initial reboot should be performed to finish installing VMware Tools. Network Adapter (bottom right corner) > Open Network and Sharing Center > Change Adapter Settings > Ethernet 0 > Properties Internet Protocol Version 4 (TCP/IPv4) > Properties Use the following IP address: (Change to match your internal network address space, and default gateway — these are sample settings) 10.255.255.164 <– IP within /24 network of 10.255.255.X 255.255.255.0 <– /24 Subnet Mask 10.255.255.1 <– Default GW/Router to ISP Use the following DNS server addresses (Change the 2nd to match your internal network DNS ip — these are sample settings) 127.0.0.1 <– Localhost (DNS server) 10.255.255.1 <– Default GW/Router to ISP



Click OK Close Run ping tests to google.com, other devices on the network — whatever to confirm that you have network access. If you do not, perform basic troubleshooting, check the VM Settings to ensure Ethernet 0 (Network Adapter) is bridged.



Install DNS Feature Server Manager Manage > Add Roles and Features > Next Role-based or feature-based installation > Next Select a server from the server pool > Next DNS Server > Click checkbox > Yes on the box that pops up > Next Next > Next > Next > Install Monitor the feature installation, when it completes, feel free to restart for good measure.



Configure a Forward Lookup Zone vCSA requires both forward and reverse lookup zones for install/functionality. Supporting esxi as a hostname, and esxi.voip.local, as well as vcsa.voip.local will require DNS to be configured. Server Manager > Tools > DNS Expand DNS > Win-VCSKKNLVACD (should change depending on your Win Server hostname is, that’s autogenerated during install) Right click Forward Lookup Zones → New Zone



Next > Primary Zone > Zone Name Voip.local (if you have an alternate local domain name, use it) Create a new file with this file name: Voip.local (if you have an alternate local domain name, use it) Do not allow dynamic updates We will not need to update these frequently, and with only a handful of DNS entries, it’s easy to do so manually. Next > Finish



You should now have a new Forward Lookup Zone : voip.local. Click it in the left hand panel to open it. Now right click on the right hand side → New Host (A or AAAA)….



Insert name “esxi”, this will autofille “esxi.voip.local”. Insert IP address of “esxi” node if/when installed Add host Repeat for vcsa



Create a Reverse Lookup Zone Right click Reverse Lookup Zones > New Zone Next Primary Zone IPv4 Reverse Lookup Zone Network ID: 10.255.255 (Change this for the first 3 octets of your home network’s address space) Next Create a new file with this file name: 255.255.10.in-addr.arpa.dns (again, the IP portion will change depending on your home network’s address space) Do not allow dynamic updates Next Finish



Right click on the right hand panel > New PTR Host IP address Should already be filled with 10.255.255 or equivalent as provided in step above. Add last portion of IP For me this is 163 for vCSA. At the bottom click Browse… > Double click the server under Records, then the Forward Lookup Zone, then voip.local, then the vCSA entry. Click OK then OK again.



You should now see the reverse lookup PTR record for vCSA.

Verifying local DNS Resolves FQDN to IP From Powershell, issue an “nslookup vcsa.voip.local” (replace domain if you’ve changed it)



PS C:\Users\kenop> nslookup vcsa.voip.local

Server: localhost

Address: 127.0.0.1

Name: vcsa.voip.local

Address: 10.255.255.163



PS C:\Users\kenop> nslookup esxi.voip.local

Server: localhost

Address: 127.0.0.1

Name: esxi.voip.local

Address: 10.255.255.162

PS C:\Users\kenop>

Verifying remote DNS Resolves FQDN to IP On your Host PC (Not the Windows Server), go to Network and Sharing Center Click on “Change Adapter Settings” Right click Ethernet > Properties This should be your default NIC that connects out to your home router/modem. Internet Protocol Version 4 (TCP/IPv4) > Right click > Properties Use the Following IP Address Use the IP address already assigned to you, subnet mask 255.255.255.0, and default gateway should be the IP of your router If you don’t know these details, check CMD/PS > ipconfig Use the following DNS Server addresses 10.255.255.164 <IP of Windows 2012 R2> 8.8.8.8 Issue an nslookup from the host OS and confirm ESXi and vCSA resolve.



kenop@KenWSLUbuntu:~$ nslookup vcsa.voip.local

Server: 10.255.255.164

Address: 10.255.255.164#53

Name: vcsa.voip.local

Address: 10.255.255.163



kenop@KenWSLUbuntu:~$ nslookup esxi.voip.local

Server: 10.255.255.164

Address: 10.255.255.164#53

Name: esxi.voip.local

Address: 10.255.255.162

Done! Now that we’ve finished setting up DNS, vCSA and ESXi can be installed in separate VMs.



Setting up ESXi 6.5 in VMWare Workstation

Create ESXi VM File > New Virtual Machine > Custom Hardware Compatability > ESXi 6.5 > Next Installer Disc Image > VMware-VMvisor-Installer-6.5.0.*.iso > next Name it what you wish. Locate it where you wish. I use E:\VirtualMachines\<vmname>. My E:\ drive is a 1tb storage drive. Number of processors: 2, number of cores, 2 . (Modify based on your machine specs — using Ryzen 7 1700x 8c 16t) Memory – 8GB (Modify based on your machine specs — using 3200mhz 32gb RAM kit) Network – Use bridged networking (this attaches the vnic for ESXi vm directly to Ethernet interface within windows. I/O Controller Type – Paravirtualized SCSI . Also choose SCSI type for VDisk type. Create a new disk. I use 200GB, however, allocate what you can (recommend minimum 40gb, more if you will run VMs on this ESXi . I will likely run one VM, so 200gb works for me, as I tend to over-provision anyway.) Allocate all disk space now, store virtual disk as a single file. (I choose these options as, Thin provision is a NEVER in the environments I work in — Unified Communications as per Cisco. I do not like Thin and don’t want to get into the practice of using it. I also prefer the vmdk to be one file.) Disk file name should be fine, click next. Customize Hardware > Click Network Adapter > Bridged Close and finish the VM creation. It will now take a few moments to allocate the full disk space and zero it all out. It should power up and be sitting at the ESXi 6.5 install screen once finished.

Install ESXi Hit Enter to proceed with install of VMVisor.iso Press F11 to agree Select Local storage created in step 1. (Hit Enter)



Example: VMware, VMWare Virtual S (mpx.vmhba0:C0:T0:L0) 200GB

Select keyboard Layout Choose password. Confirm Install (Select F11) Watch install progress bar 0 >>>>>> 100 Hit “Enter” to reboot and boot into ESXi. When the VM Starts, hit F2, enter root pw and hit F2 again to enter System Customization IPv4 Configuration Set to static (using space-bar to select, and enter to confirm) This will keep the existing IP given by DHCP, but hard code it to prevent the IP from changing, which would be an issue with DNS. IPv6 Configuration Turn off (using space-bar to select the option, and enter to confirm) Custom DNS Suffix Set to whatever you’re using for your lab, mine is voip.local. Network Adapters Set the bridged adapter (Ethernet0) to be the selected default management connection, if it is not already.

Test access to ESXi Resolve hostname using nslookup and ping IP given by DNS



kenop@KenWSLUbuntu:~$ nslookup esxi.voip.local

Server: 10.255.255.164

Address: 10.255.255.164#53

Name: esxi.voip.local

Address: 10.255.255.162

kenop@KenWSLUbuntu:~$ ping 10.255.255.162

PING 10.255.255.162 (10.255.255.162) 56(84) bytes of data.

64 bytes from 10.255.255.162: icmp_seq=1 ttl=64 time=0.642 ms

64 bytes from 10.255.255.162: icmp_seq=2 ttl=64 time=0.314 ms

64 bytes from 10.255.255.162: icmp_seq=3 ttl=64 time=0.276 ms

64 bytes from 10.255.255.162: icmp_seq=4 ttl=64 time=0.267 ms

64 bytes from 10.255.255.162: icmp_seq=5 ttl=64 time=0.341 ms

64 bytes from 10.255.255.162: icmp_seq=6 ttl=64 time=0.275 ms

^C

--- 10.255.255.162 ping statistics ---

6 packets transmitted, 6 received, 0% packet loss, time 5003ms

rtt min/avg/max/mdev = 0.267/0.352/0.642/0.133 ms

Attempt to access via Web browser using FQDN (https://esxi.voip.local/)

Setting up vCSA 6.5 (vCenter Server Appliance)

VMWare Workstation > File > Open… Navigate to location of vCenter Server Appliance OVA Template. Open it. Accept the EULA Name the new VM vCSA Storage path E:\VirtualMachines\vCSA This may change for you depending on where you store your VMs Press next Tiny vCenter with Embedded PSC (Platform Services Controller) PSC functions as a “controller” for the vCenter servers. You can use an External PSC to manage multiple vCenter servers, or you can embed PSC into vCenter at a 1:1 ratio. Press next Networking Configuration (Fill these in from top down) Ipv4 Static X.x.x.x (IP address) 24 (Prefix aka Subnet Mask – 24 is 255.255.255.0) X.x.x.x (Default Gateway) 10.255.255.164 (DNS Server. Use the DNS IP configured in the steps above relating to Win Serv 2012 R2.) vcsa.voip.local (FQDN/Network Identity)



SSO Configuration Vmware123Vmware123 System Configuration Vmware123 Vmware123 Miscellaneous Leave this false. Networking Properties Vcsa Voip.local Click Import Please wait for some time while the following takes place VM is Imported from OVF to full VMX, VMDK, etc. files in E:\VirtualMachines\vCSA\ The VM is booted for the first time Various things take place here, such as hardware detection, etc. The script kicks off from the OVF side to configure what was entered relating to the network, root account pw, sso, etc. into the *.vmx file in E:\VirtualMachines\vCSA\ This part, ideally, would occur in an ESXi environment, however does not in VMWare Workstation. When the VM is fully booted, it will show the DCUI similar to ESXi, except it will be blue on top. (See below) NOTE: DO NOT TOUCH THE VM FOR 30-60 MINUTES POST IMPORT. IT WILL TAKE A LONG TIME TO APPLY THE SETTINGS VIA THE SCRIPT/OVF TEMPLATE.

I rebooted the VM at various stages in previous attempts due to a lack of network settings, root pw, vmdir pw, etc. and each attempt resulted in a brick’d VM. Just don’t do it, man. It’s not worth it.



Access the VM via HTTPs using https://vcsa.voip.local:5480/ in a Web Browser. It will prompt to login using root credentials (the password set when deploying the OVF template) You will be greeted with an indication that the setup is in progress. DO NOT REBOOT OR TOUCH THE VM UNTIL THIS COMPLETES.



VM will complete set up and provide link to access

Click on the Flash based weblink

This will lead you to the following URL. Bookmark it. In fact, bookmark both of the below: https://vcsa.voip.local/vsphere-client/?csp https://esxi.voip.local/ui/#/login

You now have the vCSA (vCenter Server Application), and ESXi installed in VMs, and have DNS working for them.

Hopefully if you attempt this you can learn from my mistakes on the vCSA VM as the setup extended into day 2 due to my lack of patience and breaking the VM due to rebooting it during set-up. However, having these VMs installed you can play around with ESXi, set up a lightweight linux distro, or if you’ve given the ESXi host sufficient resources, you can even set up a CUCM/CUC pair with a small Windows install for CIPC/Jabber testing between the VM and an endpoint installed on your local machine.

Setup of further VMs such as CUCM, CUC, IM&P and the integration between them will be detailed in a future blog post. This setup allowed me to practice and familiarize myself with the GUI, ESXCLI and touch settings I can’t normally change/review in a production setting in preparation for the VMWare VCP6-DCV exam (Which I passed, in part due to using this lab for practice).

Hopefully this is helpful to someone, if not for a direct 1:1 translation and deployment at your home, but at least to show that you don’t always have to dump money into additional equipment to get experience with different pieces of software. If you have a weird/wacky lab setup, or know of some other tips or tricks leave a comment, or reach out to me on Twitter (@kperryuc)! Thanks for reading!