I know many of my readers have inquired about VCSIM (vCenter Server Simulator) which was a really useful tool that served a variety of use cases, but unfortunately it had stopped working with the VCSA 6.0 release. VCSIM is another topic that is near and dear to me and it is something I continue to push and advocate for internally at VMware. Earlier this week, I came to learn about a cool new incubation project that Doug MacEachern had been working on for some time now. Doug is an awesome VMware developer working on the vSphere Integrated Containers (vIC) project and he is also well known for his active contributions to both govmomi (vSphere SDK for Go) and govc CLI.
As you can probably guess from the title, the name of the project is called govcsim and it is a vCenter Server and ESXi API based simulator written using govmomi. It creates a vCenter Server model with a datacenter, hosts, cluster, resource pools, networks and a datastore. The naming of the objects is similar to that of the original VCSIM mode that was included with the VCSA. The number of resources can be increased or decreased using the various resource type flags. Resources can also be created and removed using the API. Doug had developed the tool to provide an easy way for their team to test some of the work they are doing with vIC. The tool is still under incubation but continues to received enhancements. In fact, the other day when I had used it for the first time, I had found a couple of issues which Doug resolved immediately.
I got a chance to give govcsim a spin the other day and currently you can connect to it using govmomi, govc, pyvomi (vSphere SDK for Python) or rbvmomi (vSphere SDK for Ruby). It currently does not work with PowerCLI (connects but no inventory), I know this is something Doug is currently looking into. You might also be able to connect using other vSphere SDKs but these are the ones that Doug and I have tried so far.
Requirements:
- golang 1.7+ installed on a system
- git installed on a system
In the example below, I will be demonstrating on how to setup and build vcsim on a macOS system. You can easily use Photon OS and run through the exact same instructions.
Step 1 - Install Go, you can find the binaries located here. On my macOS, I just used brew install go
Step 2 - Set the GOPATH to where govcsim will reside using the following:
export GOPATH=/Users/lamw/gocode
Step 3 - Download govcsim by running the following command:
go get -u github.com/vmware/govmomi/vcsim
Step 4 - If everything was built correctly, you should be able to run the following to launch govcsim with the help menu:
$GOPATH/bin/vcsim -h
If you just run govcsim without any arguments, it will launch with a pre-defined inventory.
By default, the API endpoint will run on 127.0.0.1 (localhost) and running on port 8989. There is no username or password, so you can pass in anything you want for it.
Here is an example of connecting to govcsim using a pyvmomi sample:
python getallvms.py -s 127.0.0.1 -o 8989 -u foo -p bar
As you can see from the screenshot above, we are getting back some VMs that are being simulated by govcsim.
We can also connect using govc, to do so, make sure you first download and install it by running the following:
curl -L https://github.com/vmware/govmomi/releases/download/v0.14.0/govc_darwin_amd64.gz | gunzip -d > /usr/local/bin/govc
chmod +x /usr/local/bin/govc
Next, we need to take the output from govcsim which is GOVC_URL and export that as an environmental variable by running the following
export GOVC_URL=https://user:[email protected]:8989/sdk
export GOVC_INSECURE=1
We can then inspect the vSphere inventory by running the following command and traversing the output:
govc ls
If you wish to have govcsim listen to a specific IP Address/Port, you can pass in the -httptest.serve property. If you wish to disable HTTPS protocol, you can pass in false to the -tls property. You can also have govcsim simulate a standalone ESXi host by using the -esx property.
Lastly, if you would like to see which vSphere API methods are supported by govcsim, you can simply open a browser to https://127.0.0.1/8989/about to see the list of methods.
I am definitely looking forward to seeing how this project develops and the great thing about this is govcsim is completely OSS. If you are interested, get involved and contribute back, even if it is just helping out with testing or filing bugs. Huge thanks to Doug for kicking off this effort, really appreciate you sharing this with our community!
Omer Kushmaro says
Nice!
But does it support Connect-VIServer? 🙂
William Lam says
Did you actually read the post 🙂
Sree says
Hi William , Thanks for the nice writeup ..I would like to know how to assign ip's and steps to be followed to deploy VM's after reaching the above state
sbhagwat says
Hello William,
Can you help us know, how to add IPs to the VMs and update VMs in host??
sjourne says
For information the project have moved to https://github.com/vmware/govmomi/vcsim.
In step 3, you need to replace go get -u github.com/vmware/vic/cmd/vcsim by go get -u github.com/vmware/govmomi/vcsim
William Lam says
Thanks! Yea, Doug recently merged the code over, appreciate the catch
Mahipat says
Hi William,
can you share the steps to add a real esxi host to VCSIM. I am using VCSIM based out of 5.5 and i have a 5.5 ESXi host which i need to add to my simulated vCenter.
Eric says
Hi William,
I'm wondering if you know govcsim can be used to simulate performance metrics similar to what you mentioned in your article using the vcsim: https://www.williamlam.com/2014/04/simulating-vsphere-performance-metrics-using-vcsim.html
It would be very useful if it does!
jashraf0406 says
Hi Villiam,
Thanks for the great writeup...I am using vcenter 6.7 and my task is to add dumy n number of host in vcenter like VCSIM for vcenter5.5. Can we use govcsim to add hosts ? Please let us know to configure if it is possible with govcsim.
Thank you !
Ashraf says
Hi William
Nice writeup.... I would like to add n number of host in vcetner 6.7 like VCSIM , Can we use govcsim to add the hosts into vcenter6.7
Ozgur says
I found the article while buying a new lab hardware. :).
Richard says
Thanks William!
This simulator has many helpful use cases. Since it's command line only, we've implemented it in the Sigma automation platform to enable a web app. It's currently available for free at https://sigma-lab.rtechservices.co/register under the Compute tab.
More info about the platform: https://rtechservices.co/