The beloved home lab project, it was a pipe dream for years. How could I justify buying new or used equipment to just play or tinker with. Finally, and I’m still not sure how, but I convinced my wife to invest in my desire to have some extra toys at the house. I think the biggest question I had to answer was: Why? Why do I need a home lab? To me the answer was simple, I can be more effective in my online communities and at work if I have a reasonable lab to tinker with at home. Spending 30 minutes or an hour each day proves to be extremely helpful in developing my skills.

At VMworld this year I participated in the #hackathon, I think that is where my interest really spiked in learning more about the Intel NUC’s. I remember them being a solid platform for a small, robust lab.

So thanks to a shopping list from William Lam and some licensing from the vExpert program, I marched forward!

In addition to the Shopping list linked above, I went ahead and purchased a Synology DS216+II. I wanted a storage device that can be on my network, and use CIFS and NFS. You can opt for a more feature rich option, but this one will suit my needs. I added two 3TB Western Digital Hard drives.IMG_3674.JPG

William Lam is correct when he says that everything goes together smoothly, I ran into ZERO problems with the Hardware configuration of my new Intel NUC components. Which is part of the reason I love this setup so much. Not to mention its more powerful and easy to use than my company provided lab.  When it all said an done, here is what my “rig” looks like now:IMG_3679.JPG

And, no the wife does not approve of my TV on my desk. 😛


Strangely I have never deployed ESX via a USB stick, so I relied on the community for that, These directions worked just fine for me Install ESXi 6 to USB via VMware Workstation

Now it was time for the rest of the deployment, with my requirements fairly simple, I wanted a lab with:

  • ESX
  • vCenter
  • VSAN
  • several Template vm’s (Windows and Linux)
  • NFS Storage
  • Licensed components
  • One liner Deployment
  • One liner Teardown/Destruction

Team “Alam” strikes again! PowerCLI Guru Alan Renouf and William Lam seemingly have a solution for anything automation when it comes to VMware.  I used the links above to download scripts that can be used to deploy ESX, vCenter, VSAN to the Intel NUC platform.

The only piece I really needed to add was my licenses, NFS storage and Template vm’s.  Additionally I updated the Destroy script to remove my vm’s and NFS storage. The scripts I use to deploy my new HomeLab test environment are located are located here on Github: HomeLab Scripts. I focused on trying to make the script more modular to meet my needs, and use common compoenents between the deployment and destruction stages.

I Highly recommend this setup for home labs. It is quick and easy to deploy, tear down and re-deploy. My current setup takes roughly 21 minutes to deploy.homelabTime.png

Whats next? Well now I have a solid platform to continue working on my companies open source projects and some of my own.

Thank you to Alan and William for your continuous contributions to the VMware community!

5 thoughts on “Start-Homelab

  1. Thanks for the write-up. I’m married and know about getting financial approval from the better half. About how much did this set you back? Just curious.


  2. Hi Justin, thank you so much for your share.
    I am quite new to PowerCLI and know how to do some basic scripting, while searching for how to configure a ESXi home lab and I came across your blog post.

    I am able to run your build script but for some strange reason it fails to populate the json file with the VCSA parameters and as a result it fails to complete the installation.

    Below is what the json file looks like and it is copied into C:\Users\user\AppData\Local\Temp folder.

    I will be grateful if you are able to shed any light on what could be going wrong.



  3. “__version”: “2.13.0”,
    “__comments”: “Sample template to deploy a vCenter Server Appliance with an embedded Platform Services Controller on an ESXi host.”,
    “new_vcsa”: {
    “esxi”: {
    “hostname”: “\u003cFQDN or IP address of the ESXi host on which to deploy the new appliance\u003e”,
    “username”: “root”,
    “password”: “\u003cPassword of the ESXi host root user. If left blank, or omitted, you will be prompted to enter it at the command console during template verification.\u003e”,
    “deployment_network”: “VM Network”,
    “datastore”: “\u003cA specific ESXi host datastore, or a specific datastore in a datastore cluster.\u003e”
    “appliance”: {
    “__comments”: “You must provide the \u0027deployment_option\u0027 key with a value, which will affect the VCSA\u0027s configuration parameters, such as the VCSA\u0027s number of vCPUs, the memory size, the storage size, and the maximum numbers of ESXi hosts and VMs which can be managed. For a list of acceptable values, run the supported deployment sizes help, i.e. vcsa-deploy –supported-deployment-sizes”,
    “thin_disk_mode”: true,
    “deployment_option”: “small”,
    “name”: “Embedded-vCenter-Server-Appliance”
    “network”: {
    “ip_family”: “ipv4”,
    “mode”: “static”,
    “ip”: “\u003cStatic IP address. Remove this if using dhcp.\u003e”,
    “dns_servers”: “\u003cDNS Server IP Address. Remove this if using dhcp.\u003e”,
    “prefix”: “\u003cNetwork prefix length. Use only when the mode is \u0027static\u0027. Remove if the mode is \u0027dhcp\u0027. This is the number of bits set in the subnet mask; for instance, if the subnet mask is, there are 24 bits in the binary version of the subnet mask, so the prefix length is 24. If used, the values must be in the inclusive range of 0 to 32 for IPv4 and 0 to 128 for IPv6.\u003e”,
    “gateway”: “\u003cGateway IP address. Remove this if using dhcp.\u003e”,
    “system_name”: “\u003cFQDN or IP address for the appliance. Remove this if using dhcp.\u003e”
    “os”: {
    “password”: “\u003cAppliance root password; refer to –template-help for password policy. If left blank, or omitted, you will be prompted to enter it at the command console during template verification.\u003e”,
    “ntp_servers”: “”,
    “ssh_enable”: false
    “sso”: {
    “password”: “\u003cvCenter Single Sign-On administrator password; refer to –template-help for password policy. If left blank, or omitted, you will be prompted to enter it at the command console during template verification.\u003e”,
    “domain_name”: “vsphere.local”
    “ceip”: {
    “description”: {
    “__comments”: “++++VMware Customer Experience Improvement Program (CEIP)++++ VMware\u0027s Customer Experience Improvement Program (CEIP) provides VMware with information that enables VMware to improve its products and services, to fix problems, and to advise you on how best to deploy and use our products. As part of CEIP, VMware collects technical information about your organization\u0027s use of VMware products and services on a regular basis in association with your organization\u0027s VMware license key(s). This information does not personally identify any individual. Additional information regarding the data collected through CEIP and the purposes for which it is used by VMware is set forth in the Trust \u0026 Assurance Center at . If you prefer not to participate in VMware\u0027s CEIP for this product, you should disable CEIP by setting \u0027ceip_enabled\u0027: false. You may join or leave VMware\u0027s CEIP for this product at any time. Please confirm your acknowledgement by passing in the parameter –acknowledge-ceip in the command line. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”
    “settings”: {
    “ceip_enabled”: true


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s