Photo by Steve Smith on Unsplash
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.tonyandbruce.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