Sunday, July 31, 2011

How to Enable Nested vFT (virtual Fault Tolerance) in vSphere 5

The ability to enable virtual Fault Tolerance in nested virtual machines running in vESX(i) is not a new feature in vSphere 5, vFT has been an unsupported feature since vSphere 4 and was initially identified by Simon Gallagher. The process is exactly the same in vSphere 5 in which three virtual machine configuration options need to be configured for the virtual machine to be enabled with FT, not the vESXi VM.
replay.supported = "true"
replay.allowFT = "true"
replay.allowBTOnly = "true"
During the beta of vSphere 5, I did enable vFT but on an offline virtual machine to conserve on unnecessary compute resources. Today there was a question on the beta community around configuring vFT for vSphere 5 and I wanted to quickly validate the configurations still hold true. I ran into a interesting error when trying to enable vFT, the power on process for the secondary virtual machine failed with the following error:
This was not an error I had seen before in vSphere 4 and looking at the vmkernel and vmware.log files, I noticed the following:
2011-07-31T17:31:39.314Z| vcpu-0| [vob.vmotion.stream.keepalive.read.fail] vMotion migration [ac1e0050:1312133702562144] failed to read stream keepalive: Connection closed by remote host, possibly due to timeout
2011-07-31T17:31:39.314Z| vcpu-0| [msg.checkpoint.precopyfailure] Migration to host <> failed with error Connection closed by remote host, possibly due to timeout (0xbad003f).
2011-07-31T17:31:39.324Z| vcpu-0| Migrate: secondary failure during migration: error Connection closed by remote host, possibly due to timeout.
I tried changing the advanced option on the vESX(i) host to increase the vMotion timeout but continued to hit the same error. I decided to look more into the first error message "failed to read stream keepalive" and found an advanced ESX(i) setting called /Migrate/VMotionStreamDisable, this advanced option has been available since ESX(i) 4.x.
I decided to disable vMotion Stream and to my surprised, it allowed FT to power on the secondary virtual machine and no longer ran into that error. 
Note: You may or may not run into this error message and the configuration may not be necessary. If you enable vFT on an offline VM, you should not have any issues as long as you meet the minimum Fault Tolerance requirements.

You can configure the advanced ESXi option using either esxcli or legacy esxcfg-advcfg commands:  
  • esxcli system settings advanced set -o /Migrate/VMotionStreamDisable -i 0
  • esxcfg-advcfg -s 0 /Migrate/VMotionStreamDisable

It is important to understand that even though one can setup a vESX(i) hosts and test and play with some of the advanced functionality such as vMotion and FT that the actual behavior is unpredictable as these configurations are unsupported by VMware. This of course is also great feature for home labs and studying for VMware certifications such as VCP and VCAP-DCA, but that should be the extent of leveraging these unsupported configurations.

Friday, July 29, 2011

vSphere 5 Summary on virtuallyGhetto

Here is a collection of all my blog posts relating to vSphere 5 that I have worked on over the last 6 months.

General Topics
1. How to Enable Support for Nested 64bit & Hyper-V VMs in vSphere 5
2. Automating ESXi 5.x Kickstart Tips & Tricks
3. Major Enhancements in esxcli for vSphere 5
4. What's New in VMware Vsish for ESXi 5
5. SSH Keys & Lockdown Mode Caveat in ESXi 5
6. How to Create Custom Firewall Rules in ESXi 5.0
7. How to Format and Create VMFS Volume using the CLI in ESXi 5
8. HBR (Host Based Replication) CLI for SRM 5
9. New vSphere 5 CLI Utilities/Tricks Marketing Did Not Tell You About Part 1
10. New vSphere 5 CLI Utilities/Tricks Marketing Did Not Tell You About Part 2
11. New vSphere 5 CLI Utilities/Tricks Marketing Did Not Tell You About Part 3
12. New vSphere 5 HA, DRS and SDRS Advanced/Hidden Options
13. How to Trick ESXi 5 in seeing an SSD Datastore
14. Free Linux & Windows Syslog Alternatives to depercated vi-logger in vMA 5
15. Host Profiles Free in ESXi 5?
16. vi-fastpass esxcli and resxtop bug resolved in vMA 5
17. Tips and Tricks for vMA 5
18. How to Enable Nested vFT (virtual Fault Tolerance) in vSphere 5
20. When Can I Run Apple OSX on vSphere 5?
21. How Fast is the New vSphere 5 HA/DRS on 64 Node Cluster? FAST!
22. New Hidden CBRC (Content-Based Read Cache) Feature in vSphere 5 & for VMware View 5?
 

API + SCRIPTS
1. There's a new mob in town, FDM MOB for ESXi 5
2. New SRM 5 APIs
3. Automating the New Integrated VIX/Guest Operations API in vSphere 5 
4. Automating Storage DRS & Datastore Cluster Management in vSphere 5
5. How to Automate Host Cache Configuration in ESXi 5
6. 2 Hidden Virtual Machine Gems in the vSphere 5 API
7. New vSphere Health Check 5.0 & ghettoVCB Script
8. New Performance Metrics In vSphere 5
9. How to Persist Configuration Changes in ESXi 4.x/5.x Part 1
10. How to Persist Configuration Changes in ESXi 4.x/5.x Part 2
11. How to Automate the Upgrade of Classic ESX 4.x to ESXi 5
12. New Application Awareness API in vSphere 5


If you have found these and other resources useful on this site and would like to support us, you can donate here. Thanks!

New vSphere Health Check 5.0 & ghettoVCB Script

The vSphere Health Check script has now been updated to support vSphere 5.0 and includes the following new features:
  • vCenter Server Instance UUID
  • vCenter hostname
  • Storage DRS Configuration (Maintenance Mode, Stats Aggregation, Stats Collection for Datastores)
  • FDM/HA Heartbeat Policy + Datastore
  • FDM/HA State
  • Host Agent Settings
  • Host New iSCSI Configuration/Information
  • Host FCoE HBAs
  • Host Source Packages for ESXi Services
  • Host ESXi Capabilities 
  • Host SMC Hardware Information regarding OSX Support
  • Host Updated Firewall Rules (direction, port type, port, protocol and allowedIPs)
  • Host Cache SSD Datastore details
  • Host DVS IPFIX Details + NIOC
  • Virtual Machine Virtual Hardware Version
  • Virtual Machine Firmware, Initial overhead memory + swap
  • Virtual Machine State
  • Virtual Machine Snapshot consolidation + HA protection
  • Virtual Machine EZT Disk Type
  • Updated color mappings for multipath states
  • Support for standalone ESX(i) hosts without vCenter Clusters
  • New healthCheck.conf variables:  DVS_SUMMARY, DVS_CAPABILITY, DVS_CONFIG, DATASTORE_CLUSTER_SUMMARY, DATASTORE_CLUSTER_POD_CONFIG, DATASTORE_CLUSTER_POD_ADV_CONFIG, DATASTORE_CLUSTER_POD_STORAGE, HOST_ISCSI, HOST_AGENT, HOST_CACHE, VM_STATE, VM_EZT
  • Updated color scheme for HTML report 
Here is an sample report that you can view.
For more details, please check out the vSphere Health Check Script document located here.

The popular free virtual machine backup script ghettoVCB has also been updated to support ESXi 5.0!

Tips and Tricks for vMA 5

vMA 5 is just one of the latest VMware virtual appliances that have received the blessings and conversion to VMware's standard virtual appliance OS, SUSE. There have been several changes in the latest version of vMA and here are just a few tips and tricks that can help get you going with this new OS

1. The increase password complexity is something you may notice when you first configure vMA, if you are interested in changing it to make it easier or harder, you can take a look at the following knowledge base found on Novell's website:

2. You can now update vMA using a browser versus using the vma-update utility which is no longer being bundled with vMA 5. To access the management interface of vMA, go to your browser and type the following: https://[your-vma-hostname]:5480. You can configure a few things through the VAMI interface including updates for vMA in which you have a few options to choose from such as no updates, automatic check for updates or automatic check and install updates (just like Windows Update)

3. As with the previous versions of vMA, it has the OSP (Operating Specific) VMware Tools and the status will show up on the vSphere Client as "unmanaged". If you want to upgrade to the latest version of VMware Tools found on ESXi 5.0 to make sure of functionality such as the new integrated VIX API into the core vSphere API, you will need to run the latest VMware Tools. To do so, you will need to uninstall the OSP VMware Tools and then install the VMware Tools found in ESXi

First you will need to identify the package to uninstall and then uninstall, this can all be done at once using the following command:

vi-admin@primp-dhcp-235:~> sudo rpm -e $(rpm -qa | grep "open-vm-tools")

Stopping VMware Tools services in the virtual machine:
Guest operating system daemon: done
Virtual Printing daemon: done
Unmounting HGFS shares: done
Guest filesystem driver: done
Guest memory manager: done
VM communication interface socket family: done
VM communication interface: done
warning: /etc/vmware-tools/tools.conf saved as /etc/vmware-tools/tools.conf.rpmsave

You will need to either copy the linux.iso containing the latest version of VMware Tools from your ESXi 5 host or use the vSphere Client to install the tools. I will demonstrate how to do so from the command line using the linux.iso. You will need to copy the linux.iso over to your vMA host using the following command:

vi-admin@primp-dhcp-235:~> scp root@esxi50-1.primp-industries.com:/vmimages/tools-isoimages/linux.iso .

Now you will mount the linux.iso to extract the VMware Tools package

vi-admin@primp-dhcp-235:~> sudo mount -o loop linux.iso /mnt/

Next we will extract the contents to /tmp

vi-admin@primp-dhcp-235:~> tar -zxvf /mnt/VMwareTools-8.5.1-380278.tar.gz -C /tmp

Then we will umount linux.iso file

vi-admin@primp-dhcp-235:~> sudo umount /mnt

We now will change into the extracted directory under /tmp/vmware-tools-distrib and perform the installation of VMware Tools

vi-admin@primp-dhcp-235:~> cd /tmp/vmware-tools-distrib

vi-admin@primp-dhcp-235:~> sudo ./vmware-install.pl

You can accept all the defaults and when it prompts you for "gcc", you can ignore that option as gcc is not available by default on vMA and after that you will see that your VMware Tools have been updated from the vSphere Client.

4. Previous version of vMA, if you are familiar with Redhat/CentOS/Fedora, you know that you can use YUM as a way to install packages from a package repository. You can do the same on SUSE, but you will need to leverage a different tool called zypper which is a command line package manage just like YUM. You can also use another tool called YaST which also uses libzypp which is zypper package management engine. In the following example I will demonstrate how to configure a repository using zypper and search and installing a package.

To get a list of repositories based on the version of SUSE, you can take a look at the following link.

To add a repository, you will use the "ar" (Add Reposistory) option specified by the URL and alias:

vi-admin@primp-dhcp-235:~> sudo zypper --gpg-auto-import-keys ar http://download.opensuse.org/distribution/11.1/repo/oss/ 11.1
Adding repository '11.1' [done]
Repository '11.1' successfully added
Enabled: Yes
Autorefresh: No
URI: http://download.opensuse.org/distribution/11.1/repo/oss/

You can add multiple repository and you can reference them by either the alias or the number assigned to the given repository

vi-admin@primp-dhcp-235:~> sudo zypper --gpg-auto-import-keys ar http://download.opensuse.org/update/11.1/ Update-11.1
Adding repository 'Update-11.1' [done]
Repository 'Update-11.1' successfully added
Enabled: Yes
Autorefresh: No
URI: http://download.opensuse.org/update/11.1/

Once you have successfully added your repository, you can view them by running the "lr" (List Repository) option

vi-admin@primp-dhcp-235:~> zypper lr
# | Alias | Name | Enabled | Refresh
--+-------------+-------------+---------+--------
1 | OS-11.1 | OS-11.1 | Yes | No
2 | Update-11.1 | Update-11.1 | Yes | No

Before you search or install packages using zypper, you will need to first refresh the repository and build the cache. To so do, you will just run the "refresh" operation

vi-admin@primp-dhcp-235:~> sudo zypper refresh
Retrieving repository '11.1' metadata [|]

New repository or package signing key received:
Key ID: B88B2FD43DBDC284
Key Name: openSUSE Project Signing Key
Key Fingerprint: 22C07BA534178CD02EFE22AAB88B2FD43DBDC284
Repository: 11.1

Do you want to reject the key, trust temporarily, or trust always? [r/t/a/?] (r): t
Retrieving repository '11.1' metadata [done]
Building repository '11.1' cache [done]
Retrieving repository 'Update-11.1' metadata [-]

New repository or package signing key received:
Key ID: B88B2FD43DBDC284
Key Name: openSUSE Project Signing Key
Key Fingerprint: 22C07BA534178CD02EFE22AAB88B2FD43DBDC284
Repository: Update-11.1

Do you want to reject the key, trust temporarily, or trust always? [r/t/a/?] (r): t
Retrieving repository 'Update-11.1' metadata [done]
Building repository 'Update-11.1' cache [done]
All repositories have been refreshed.

Now we can search for a package using the "se" (Search) option

vi-admin@primp-dhcp-235:~> zypper se ruby

Let's say we have located ruby as the package to install, you can then run "in" (Install) operation

vi-admin@primp-dhcp-235:~> sudo zypper in ruby

You could have also done this using yast by running yast -i ruby which will then launch a graphical UI or just by running yast by itself and navigating through the UI for packages.

5. vi-logger in vMA 5 has been deprecated and removed, for a free syslog alternative take a look at this blog article: Free Linux & Windows Syslog Alternatives to depercated vi-logger in vMA 5

6. How to Change the Splash Screen In vMA

Thursday, July 28, 2011

How to Automate Host Cache Configuration in ESXi 5

ESXi 5.0 now supports a new feature called Host Cache which allows a user to offload the virtual machine's swap onto a local SSD device for performance, this can be very helpful for VMware View deployments or other VDI type deployments on vSphere 5.
Currently this is a manual process in which a VMFS volume must be created on an local SSD device and then configured to be used as a Host Cache datastore under the host configuration section. There are two ways of automating this whether this is done during the kickstart process which I am a fan of or as part of a post install process.

Method #1
In the first option, the process involves formatting and creating a VMFS volume on a local SSD devices and using a little python to connect to the vSphere MOB to perform the host cache configuration. Here is a snippet of what the kickstart would look like as part of the %firstboot section:

The script uses the partedUtil to format the local SSD and then using vmkfstools to put a VMFS volume and then finally connecting to the vSphere MOB to configure host cache.

Method #2
In the second option, I wrote a vSphere SDK for Perl script hostCacheManagement.pl using the vSphere APIs to manage and configure host cache datastores after an ESXi 5 host has been built. The script supports three options: list, enable and disable and will also validate that datastore being specified are SSD datastores.

Download the hostCacheManagement.pl script here.

Here is an example of listing all SSD datastores and whether or not they are being used for host caching:
Here is an example of enabling an SSD datastore for host cache:
Note: Make sure your "--swapsize" is less than or equal to the size of your SSD datastore else an error will be thrown. VMFS does take up some space for its metadata/etc.

Here is an example of disabling an SSD datastore for host cache:
Here is an example if you try to specify a non-SSD datastore, an error will be thrown:

New vSphere 5 CLI Utilities/Tricks Marketing Did Not Tell You About Part 3

Continuing from New vSphere 5 CLI Utilities/Tricks Marketing Did Not Tell You About Part 2

15. Another way to run dcui utility is using the dcuiweasel, I'm not exactly sure what the difference between this and dcui utility, but I suspect it has something to do with weasel also loaded.

16. You can run gdbserver for debugging processes, I suspect this maybe for VMware engineers/support to use.

17. To view/modify the security policy under /etc/vmware/secpolicy including VMCI modifications you can use the secpolicytools 
18. Networking details about the various filters can be viewed using summarize-dvfilter utility
19. There are two utilities that deal with managing devices but doesn't have a whole lot of help are vmkdevmgr and vmkmkdev. I suspect these may be as useful as this other vmk* utility (vmkchdev) but I haven't explored either utility

20. If you have VMkernel or VM core dumps, you can use this nifty utility vmkdump_extract to extract various bits of information including the logs within the core dump. This tool may come in very handy for troubleshooting purposes
21. There is a new esxcfg-* command that is only available in ESXi Shell called esxcfg-fcoe which as you can guess from the name allows you to manage and configure your FCoE devices. 

~ # esxcfg-fcoe
No action provided
esxcfg-fcoe []

Where is one of:

-d|--discover=vmnicX [] Initiate FCoE adapter discovery on the given NIC
-r|--remove-adapter=vmhbaXYZ Destroy the specified FCoE adapter
-x|--deactivate-nic=vmnicW Deactivate FCOE configuration for given NIC
-l|--list-vnports List discovered VNPorts associated with this host
-N|--list-fcoe-nics List FCoE-capable NICs with detailed information
-n|--compact-list-fcoe-nics List FCoE-capable NICs each on a single line,
with limited information
-e|--enable Enable an FCoE-capable NIC if it is disabled
-D|--disable Disable an FCoE-capable NIC if it is enabled (requires
reboot to take effect)
-h|--help Show this message

And are a set of:

-p|--priority=[0-7] Priority class to use for FCoE traffic
-v|--vlan=id VLAN ID to use for FCoE traffic
-a|--macaddress=xx:xx:xx:xx:xx:xx MAC address to use for the underlying FCoE controller

Examples:

To discover FCoE adapters on a given NIC, using default settings
esxcfg-fcoe -d vmnicX

To discover FCoE adapters on a given NIC, specifying only MAC address
esxcfg-fcoe -d vmnicX -a MA

To discover FCoE adapters on a given NIC, specifying all settings
esxcfg-fcoe -d vmnicX -p priority -v vlan -a MA

To remove an FCoE adapter
esxcfg-fcoe -r vmhbaXYZ

To enable FCoE for a given NIC, specifying bandwidth and MAC address
esxcfg-fcoe -e vmnicX -a MA

To disable FCoE for a given NIC
esxcfg-fcoe -D vmnicX

To deactivate FCoE for a given NIC
esxcfg-fcoe -x vmnicX

22. For more details on hbrfilterctl check out the blog post here

23. For more details on apply-host-profilesapplyHostProfileesxhpcli and esxhpedit check out the blog post here.

24. On VCVA (vCenter Virtual Appliance) you can quickly list the port configuration by running the following command:

vcenter50-2:~ # /usr/lib/vmware-vpx/py/vccfg.py -v defaults
VC_ROOT_SSH=yes
VC_PORT_QS_HTTPS=10443
VC_ESXI_AUTODEPLOY_MAX_SIZE=2
VC_PORT_NETDUMPER=6500
VC_ESXI_NETDUMPER_DIR_MAX=2
VC_PORT_HTTPS=443
VC_PORT_WEB_SVC_HTTPS=8443
VC_PORT_HEARTBEAT=902
VC_PORT_AUTODEPLOY=6502
VC_PORT_LDAP=389
VC_PORT_SYSLOG=514
VC_PORT_QS_HTTP=10080
VC_PORT_WEB_SVC_HTTP=8080
VC_PORT_HTTP=80
VC_PORT_SYSLOG_SSL=1514
VC_PORT_QS_XDB=10109
VC_CFG_RESULT=0

Wednesday, July 27, 2011

2 Hidden Virtual Machine Gems in the vSphere 5 API

I was recently going through the new vSphere 5 API reference guide and I had stumbled across two new interesting virtual machine features that I did not see any mention of in the vSphere 5 beta documentation.

The first feature is the support for a new e1000e virtual ethernet adapter which provides support for PCI-Express adapters. This is a new virtual device type that has been added in vSphere 5 and is only supported on virtual machines running on Virtual Hardware 8.
The interesting caveat about this feature is that it is not available as an option through the vSphere Client when adding a virtual network adapter to a virtual machine. You only have the option of pcnet,vmxnet2,vmxnet3 or e1000 but not the new e1000e. Since the feature is in the vSphere API, I updated an old vSphere SDK for Perl script called vmNICManagement.pl to support the update of an existing virtual network adapter to an e1000e.
Here is an example of a VM that is running Virtual Hardware 8 with a normal e1000 virtual network adapter which we will then convert into an e1000e adapter.

We then run the script and select the virtual network adapter to update and the operation "updatenictype" and specify the nictype which is e1000e in this example
Once the virtual network adapter has been updated, you can view the virtual machine's settings once again and you will see the new e1000e adapter.
There are also two additional device types that have been introduced in vSphere 5: VirtualUSBXHCIController which is virtual USB Extensible Host Controller Interface (USB 3.0) and VirtualHdAudioCard (check out Kendrick Coleman's post here)

The second feature is the ability configure the boot device order for a virtual machine which is available through the vSphere API but not through the vSphere Client. This feature does not actually change the BIOS boot order device but provides the ability to create an ordered list of preferred boot order devices. Once this list has been exhausted, then it will default to the BIOS list of boot order devices. This feature also requires the virtual machine to be running Virtual Hardware 8.
When viewing the configurations of a virtual machine using the vSphere Client, you have a few options to configure when it comes to the "Boot Options". The only new feature from vSphere 5 that has been exposed in the vSphere Client is the ability to select boot firmware which now includes EFI support. No where in the vSphere Client is there an option to control the boot device order.
The only way to view this new feature is using the vSphere API and using the vSphere MOB we can see that by default this feature is not enabled/configured.
I of course decided to write a simple vSphere SDK for Perl script called updateVMBootOrder.pl which allows you to configure a list of preferred boot devices. The options support cdrom, floppy, hard disk and virtual nic and the last two also require specifying the specific hard disk or virtual nic as a virtual machine can be configured with several.

The script supports a "list" operation which will query an existing virtual machine to check whether boot options have been configured, if so, they will be listed in order they were defined in.
We have confirmed that no boot options have been configured for this VM. If you decide to select a hard disk or virtual network adapter, you will need to run some additional queries to identify the "deviceKey" which is used to identify a particular virtual device. If you select cdrom or floppy, then these additional steps are not necessary.

To view the virtual network adapter device keys, you will need to run the "listnic" operation.
To view the hard disk device keys, you will need to run the "listdisk" operation.
Now let's say you want to configure the following boot device order:
  1. cdrom
  2. ethernet
  3. disk
You will need to use the "update" operation and then specify the devices and their order using --bootorder flag and also the respective --nickey and --diskkey.
If we now re-run the "list" operation, we will see the configured boot devices for this virtual machine.
We can also verify by checking the vSphere MOB for this particular virtual machine and the bootOptions parameter should now be populated.
If you would like to manually add this to a virtual machine's .vmx configuration file you can, but it is definitely not recommended. The following entries map to the example above:

As you can see it pays off to poke around in the vSphere API reference documentation :-D You should try it sometime!

Automating Storage DRS & Datastore Cluster Management in vSphere 5

Storage DRS is probably one of, if not the coolest feature in vSphere 5. Storage DRS allows you to cluster your datastores into what is known as a datastore cluster (storage pod) and automatically balances both your storage I/O and capacity just like DRS does with your compute. The user interface is extremely easy to use but as always, if you need to click through several screens to get to the outcome, some automation can never hurt :)

I decided to create a vSphere SDK for Perl script called datastoreClusterManagement.pl which allows you to automate all aspects of creating and managing your storage pod/cluster. You will need a system that has the vCLI installed or you can use VMware vMA 5 to run the script. You will also need to connect to a vCenter Server 5 for all SDRS operations.

You can download datastoreClusterManagement.pl script here.

The script supports 8 different types of operations and are describe below
OperationDescription
ListList all available datastore clusters
QueryQuery details for a specific datastore cluster
CreateCreate a datastore cluster
DeleteDelete a datastore cluster (Datastores are left intact)
Add DatastoreAdd datastore(s) to an existing datastore cluster
Remove DatastoreRemove datastore(s) from an existing datastore cluster
Enter Maintenance ModePut a datastore into maintenance mode
Exit Maintenance ModeTake a datastore out of maintenance mode

Here is an example of performing the "list" operation:
./datastoreClusterManagement.pl --server vcenter50-1 --username root --operation list

Here is an example of performing the "query" operation:

./datastoreClusterManagement.pl --server vcenter50-1 --username root --operation query --pod homer-NFS-pod

Here is an example of performing the "create" operation w/single datastore:

./datastoreClusterManagement.pl --server vcenter50-1 --username root --operation create --datacenter MN-physical --enable_sdrs true --enable_sdrs_iometric true --pod moe-NFS-pod --sdrs_automation automated --sdrs_evaluate_period 480 --sdrs_imbal_thres 30 --sdrs_latency 15 --sdrs_util_diff 20 --sdrs_util_space 60 --datastore himalaya-NFS-moe-primp-1

Here is an example of performing the "create" operation w/datastore file:

./datastoreClusterManagement.pl --server vcenter50-1 --username root --operation create --datacenter MN-physical --enable_sdrs true --enable_sdrs_iometric true --pod moe-NFS-pod --sdrs_automation automated --sdrs_evaluate_period 480 --sdrs_imbal_thres 30 --sdrs_latency 15 --sdrs_util_diff 20 --sdrs_util_space 60 --datastore_file dsfile

Here is an example of performing the "delete" operation:

./datastoreClusterManagement.pl --server vcenter50-1 --username root --operation delete --pod moe-NFS-pod

Here is an example of performing the "add_datastore" operation:

./datastoreClusterManagement.pl --server vcenter50-1 --username root --operation add_datastore --pod moe-NFS-pod --datastore himalaya-NFS-moe-primp-2

Here is an example of performing the "remove_datastore" operation:

./datastoreClusterManagement.pl --server vcenter50-1 --username root --operation remove_datastore --pod moe-NFS-pod --datastore himalaya-NFS-moe-primp-1


Note: Both "add_datastore" and "remove_datastore" operation support single datastore and/or datastore file

Here is an example of performing the "ent_maint" operation:

./datastoreClusterManagement.pl --server vcenter50-1 --username root --operation ent_maint --pod homer-NFS-pod --datastore himalaya-NFS-moe-primp-5

Here is an example of performing the "ext_maint" operation:

./datastoreClusterManagement.pl --server vcenter50-1 --username root --operation exi_maint --pod homer-NFS-pod --datastore himalaya-NFS-moe-primp-5

 
There is also complete perl docs for this script which can be called using the following command:

perldoc datastoreClusterManagement.pl

vi-fastpass esxcli and resxtop bug resolved in vMA 5

Awhile back I wrote about an resxtop bug found in vMA 4.1 in which it no longer functions with vMA's vi-fastpass component and still requires you to provide the username and password even though vi-fastpass has been initialized for a given target. There was also a slight quirk when using esxcli and vi-fastpass, in which you had to specify in addition the --server of your ESX(i) host which allowed you to utilize vi-fastpass.

With the latest release of vMA 5, both of these issues have now been resolved for both ESXi 5 and ESX(i) 4.x. I would highly recommend you download the latest version if you would like to make use the vi-fastpass component in vMA.

Here is an example of using vi-fastpass with resxtop:

vi-admin@vma50-1:~> vifptarget -s himalaya.primp-industries.com

vi-admin@vma50-1:~[himalaya.primp-industries.com]> resxtop

Here is an example of using vi-fastpass with esxcli:

vi-admin@vma50-1:~> vifptarget -s himalaya.primp-industries.com

vi-admin@vma50-1:~[himalaya.primp-industries.com]> esxcli

Tuesday, July 26, 2011

Automating the New Integrated VIX/Guest Operations API in vSphere 5

VMware hinted earlier this year that the future of the VIX API would eventually be integrated into the core vSphere API, it looks like the wait is finally over. With the latest release of vSphere 5, the VIX API is no longer a separate API but consolidated into the core vSphere API which allows users to perform guest level operations directly to a virtual machine that is running VMware Tools.

There is now a new managed object called GuestOperationsManager which provides functionality for Authentication (authManager), File management (fileManager) and process management (processManager). The API is actually quite easy to use as you need to first acquire a guest auth credential within the guest and then you can perform any of the various guest operations using this credential cache.
I wanted to show the power of the VIX API by creating a vSphere SDK for Perl script called guestOpsManagement.pl that implements majority of the VIX/Guest Operations for users to manage from a centralized script. You will need to have a system that has the vCLI installed or use VMware vMA and to utilize the new VIX operations, your virtual machines must have the latest VMware Tools installed.

You can download guestOpsManagement.pl script here

The script supports 12 different VIX Operations which are described below:

OperationDescription
validateAllows a user to validate guest credentials without performing any VIX Operation
psPerforms a process listing within the guestOS
startprogStarts a program within the guestOS
killKills a particular process within the guestOS
lsPerorms a listing of a particular directory within the guesOS
mkdirCreates a directory within the guestOS
rmdirRemoves a directory within the guestOS
rmRemoves a file within the guestOS
mvMove/Rename a file within the guestOS
mvdirMove a directory within the guestOS
copyfromguestDownload a file from within the guestOS to local system
copytoguestUpload a file to the guestOS from a local system

Here is an example of performing the "validate" operation:

./guestOpsManagement.pl --server vcenter50-1 --username root --vm vMA5 --operation validate --guestusername root

Here is an example of performing the "ps" operation:

./guestOpsManagement.pl --server vcenter50-1 --username root --vm vMA5 --operation ps --guestusername root

In the next example, we will kill off the "tail" process as listed above.

Here is an example of performing the "kill" operation:

./guestOpsManagement.pl --server vcenter50-1 --username root --vm vMA5 --operation kill --guestusername root --pid 13198

Here is an example of performing the "startprog" operation:

./guestOpsManagement.pl --server vcenter50-1 --username root --vm vMA5 --operation startprog --guestusername root --working_dir /root --program_path /usr/bin/touch --program_args /root/virtuallyghetto

Note: There is known vSphere SDK for Perl bug for the return value of a "long" which will be resolved in GA release of vSphere SDK for Perl 5.0. You should not see the "error" message when running this operation

Here is an example of performing the "ls" operation:

./guestOpsManagement.pl --server vcenter50-1 --username root --vm vMA5 --operation ls --guestusername root --filepath_src /var/log

Here is an example of performing the "mkdir" operation:

./guestOpsManagement.pl --server vcenter50-1 --username root --vm vMA5 --operation mkdir --guestusername root --filepath_src /tmp/virtuallyghetto

Here is an example of performing the "rmdir" operation:

./guestOpsManagement.pl --server vcenter50-1 --username root --vm vMA5 --operation rmdir --guestusername root --filepath_src /tmp/virtuallyghetto

Note: If you would like to perform a recursive directory delete, you will need to specify the --recursive, please use with caution

Here is an example of performing the "rm" operation:

./guestOpsManagement.pl --server vcenter50-1 --username root --vm vMA5 --operation rm --guestusername root --filepath_src /root/virtuallyghetto

Here is an example of performing the "mv" operation:

./guestOpsManagement.pl --server vcenter50-1 --username root --vm vMA5 --operation mv --guestusername root --filepath_src /root/steve_jablonsky --filepath_dst /root/hans_zimmer

Here is an example of performing the "mvdir" operation:

./guestOpsManagement.pl --server vcenter50-1 --username root --vm vMA5 --operation mvdir --guestusername root --filepath_src /tmp/foo --filepath_dst /tmp/bar

Here is an example of performing the "copyfromguest" operation:

./guestOpsManagement.pl --server vcenter50-1 --username root --vm vMA5 --operation copyfromguest --guestusername root --filepath_src /var/log/messages

Here is an example of performing the "copytoguest" operation:

./guestOpsManagement.pl --server vcenter50-1 --username root --vm vMA5 --operation copytoguest --guestusername root --filepath_src /home/vi-admin/test.pl --filepath_dst /root/test.pl

There is also complete perl docs for this script which can be called using the following command:

perldoc guestOpsManagement.pl