Update: We’ve added homebrew and debian packages for govc
for your installation pleasure. See last section for instructions.
Every once in a while I run across an amazing tool which should be shared with others, we all deserve nice things.
For the last few years I’ve been using the AWS CLI to reboot vms, find ip addresses used within a vpc and looking up vm instance types. I recently had to switch to vSphere and wanted a similar experience.
VMWare has created a CLI for interacting with vSphere called govc. I’ve enjoyed using it and hope you will too!
Why I like govc
- The tool is written in
go
and is compiled for Linux, FreeBSD, OSX & Windows. Download the most recent releases here. - It is very simple to use. Download, set a couple environment variables and start poking around:
export GOVC_URL="https://lab1.starkandwayne.com"
export GOVC_USERNAME='bruce'
export GOVC_PASSWORD='tony'
The GOVC_URL
is the vCenter url, if you get an x509
certificate error also add export GOVC_INSECURE=true
Now you can quickly list the datacenters
govc ls
This will output the list of vCenter clusters similar to:
/CF1
/CF2
/Kubo
You list the vms for a datacenter by executing:
govc ls /CF1/vm/*
/CF1/vm/jumpbox1
/CF1/vm/jumpbox2
/CF1/vm/bosh-pr
/CF1/vm/shield-pr-lab
Helpful Example
Once connected you can use the CLI to upload large ISOs which may otherwise timeout during their upload. For instance the command below will upload an ubuntu ISO from your local filesystem to a vSphere datastore called DataStore1
:
govc datastore.upload -dc=CF1 -ds DataStore1 /
./ubuntu-18.04-live-server-amd64.iso ubuntu-18.04-live-server-amd64.iso
Helpful hint: if you do uploads from a vm created on the vSphere cluster they can be much faster than attempting from your laptop.
There are a ton of other examples with the existing help
documented here: https://github.com/vmware/govmomi/blob/master/govc/USAGE.md which gives examples for:
- Listing vm information, including ip and CPU
- Creating/updating/deleting vms, clusters, datastores
- Host switch, storage, power settings
- Copying/moving/deleting files in datastores
- Much more… Go look and enjoy
Installation
We like using Homebrew for installing software on MacOS and Debian packages for installing software on Ubuntu/Debian servers. To make life easier for me and you, we’ve made govc
available on both packaging systems.
These packages will automatically update with new versions whenever VMWare cut new releases.
For Homebrew:
brew install starkandwayne/cf/govc
For Debian/Ubuntu:
wget -q -O - https://raw.githubusercontent.com/starkandwayne/homebrew-cf/master/public.key | apt-key add -
echo "deb http://apt.starkandwayne.com stable main" | tee /etc/apt/sources.list.d/starkandwayne.list
apt-get update
apt-get install govc
If you’re interested in how we update our Homebrew and Debian packages using Concourse CI, our repo is at https://github.com/starkandwayne/homebrew-cf.