Monitor VMware vSphere from FreeBSD using the Perl SDK
450 words, 3 minutes
VMware provides a CLI and a Perl SDK that allows managing and monitoring vSphere and ESXi environment from Windows and Linux. The Perl SDK is also available in the FreeBSD ports tree.
Here’s how to install and, basically, use the VMware Perl SDK on FreeBSD.
I’m using FreeBSD 8.3 but I guess what really matters in the ports tree. Use
portsnap
to get and/or update your ports tree. There is no binary package
available as it is required to get the stuff from VMware’s website, creating an
account and accepting the license.
Here’s what FreeBSD will tell you:
===> License check disabled, port has not defined LICENSE
Due to licensing restrictions, certain files must be fetched manually.
Please visit http://communities.vmware.com/community/vmtn/developer/forums/vsphere_sdk_perl
and choose Download. Then, login using a VMware account and accept the license agreement.
Choose the download for vSphere SDK for Perl - 32-bit Linux Installer (even if you are not on i386)
After the download has completed, please place VMware-vSphere-Perl-SDK-5.0.0-422456.i386.tar.gz in
/usr/ports/distfiles, then restart the build.
Download the archive, copy it where it shall be stored and run the installer:
# mkdir /usr/ports/distfiles
# mv VMware/VMware-vSphere-Perl-SDK-5.0.0-422456.i386.tar.gz /usr/ports/distfiles/
# cd /usr/ports/net/vmware-vsphere-cli
# make install clean
===> License check disabled, port has not defined LICENSE
===> Extracting for vmware-vsphere-cli-5.0.0
=> SHA256 Checksum OK for VMware-vSphere-Perl-SDK-5.0.0-422456.i386.tar.gz.
===> vmware-vsphere-cli-5.0.0 depends on file: /usr/local/bin/perl5.12.4 - found
(...)
install -o root -g wheel -m 555 /usr/ports/net/vmware-vsphere-cli/work/VMware-vSphere-Perl-SDK-5.0.0-422456.i386/bin/viperl-support /usr/local/bin
========================================================================
Please note that, by default, an underlying Perl module does certificate
verification when communicating with vSphere hosts.
You must create a file that contains the public keys of all of your
vSphere hosts and then configure your Perl scripts to have the following
line:
$ENV{HTTPS_CA_FILE} = "/path/to/file";
If you want to disable this important security feature, you may set the
following variable to 0:
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}
========================================================================
===> Compressing manual pages for vmware-vsphere-cli-5.0.0
===> Registering installation for vmware-vsphere-cli-5.0.0
During the building process, I did “Enable national language support” for
e2fsprogs-libuuid
and “Enable https support” for p5-libwww
.
Now, it’s time to test the API:
# /usr/local/share/examples/vmware-vsphere-cli/host/hostinfo.pl \
--server esxi --username 'admin' --password 'pass'
Host Information
Host Name: esxi.tumfatig.net
Port Number: 902
BootTime: 2012-05-05T10:08:01.907061Z
Cpu Model: Genuine Intel(R) CPU 0 @ 2.30GHz
Cpu Speed: 9179149192
Cpu Usage: 281
File System: vmfs nfs vfat
Host Status: The status is unknown
Maintenance mode: 0
Physical Memory: 17087459328 bytes
Memory Usage: 13068MB
Network Adapters: 2
Reboot Required: 0
Software on host: VMware ESXi 5.0.0 build-623860
VMotion: 0
If you get errors like “Server version unavailable at 'https://esxi:443/sdk/vimService.wsdl' at /usr/local/lib/perl5/site_perl/5.12.4/VMware/VICommon.pm line 545
”, this is
because LWP is not accepting the self-signed certificate from the ESXi.
Just add the following line to any script you run:
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
So far so good, happy monitoring!