Showing posts with label vmware. Show all posts
Showing posts with label vmware. Show all posts

Thursday, May 5, 2016

get vCenter Server or Replication appliance update URL from command line using xmllint

My vCenter appliances (Server and Replication) are on an internal network and cannot get to the outside world. To update them, I mirror the update repositories on an internal web server, using the script from http://www.virtuallyghetto.com/2013/05/how-to-create-offline-update-repository.html

The script requires the update URL, which is easy to get manually from the appliance web interface, but I want to automate the update.

I found that the default update URL is stored in

/opt/vmware/var/lib/vami/update/provider/provider-deploy.xml
and the user-entered update URL is stored in
/opt/vmware/var/lib/vami/update/provider/provider-runtime.xml

The appliances come with some command-line tools to parse XML; I'm using xmllint:

echo 'cat //property[@name="repositoryAddress"]/@value' | \
xmllint --shell /opt/vmware/var/lib/vami/update/provider/provider-deploy.xml | \
grep https
The output:
value="https://vapp-updates.vmware.com/vai-catalog/valm/vmw/05d561bc-f3c8-4115-bd9d-22baf13f7178/5.8.1.12927.latest"


Tuesday, July 14, 2015

Open a console to a virtual guest on ESXi or vSphere cluster

This entry ties in nicely with a previous entry I made about creating SSH tunnels for vSphere.

Unfortunately, when you setup SSH tunnels for the Windows vSphere client (or even for the vSphere web client), you cannot open console windows to the guests using the normal methods -- they will always fail to connect.

To workaround this, use VMware's "Remote Console" program to connect through the tunnel to the host. Note that the tunnel must go to the host on which the guest is running.

Steps:

  1. Install VMware Remote Console (in Vmware downloads, vsphere 5.5, "Drivers & Tools" tab)
  2. find out the VMID of the desired guest using the ESXi cmd line:
        vim-cmd vmsvc/getallvms
  3. open url (assuming host tunnel is 127.0.0.4):
       vmrc://root@127.0.0.4/?moid=vmid
    where vmid is the id you found; e.g. if the ID is 29:
       vmrc://root@127.0.0.4/?moid=29

In case it is not obvious, you open the URL from the command prompt:

cd C:\Program Files (x86)\VMware\VMware Remote Console
vmrc.exe vmrc://root@127.0.0.4/?moid=29

Thursday, April 3, 2014

Automating the VMware vSphere Perl SDK install with expect:


I couldn't find any other postings on the net about this, so here's my solution for automating the installation for the VMware vSphere Perl SDK on RHEL6 (this assumes you already have all the prerequisites installed.).  It probably works on any Linux OS but I only tested it on RHEL6.4.

Save this expect script (requires expect to be installed, duh!) in the same directory as the extracted tarball for the SDK (probably vmware-vsphere-cli-distrib/):
#!/usr/bin/expect

set timeout 120

spawn "./vmware-install.pl"

expect "Press enter to display " { send "\r" }
expect "vSphere Software Development Kit License Agreement" { send "q" }
expect "Do you accept" { send "yes\r" }
expect "Do you want to install precompiled Perl modules for RHEL" { send "\r" }
expect "In which directory do you want to install the executable files" { send "\r" }
# Wait for installation to finish
expect EOF
This accepts the defaults ("yes" to installing precompiled perl modules, "/usr/bin" for the installation directory) If you don't like that, edit the script!

SSH tunnel to multiple vSphere/ESXi hosts

An SSH tunnel to a single host is easy; reference: http://www.virtuallifestyle.nl/2010/03/tunneling-a-vsphere-client-connection-over-ssh/

However, if you want to open the vSphere client multiple times for simultaneous connections to multiple ESXi/vCenter hosts, then you have to get a little creative. Basically you follow the same instructions as above, except you don't need to edit the hosts file. Just use a single address in the loopback network (127.0.0.2 - 127.255.255.254 ) for each remote ESXi host.  e.g.:

ESXi host Tunnel Source Tunnel Destination
host1 127.0.0.2:443 esxhost1:443
host1 127.0.0.2:902 esxhost1:902
host1 127.0.0.2:903 esxhost1:903
host2 127.0.0.3:443 esxhost2:443
host2 127.0.0.3:902 esxhost2:902
host2 127.0.0.3:903 esxhost2:903

Then simply connect vSphere client to one of the loopback addresses you used.  In the example above, to connect to esxhost1, you connect vSphere Client to 127.0.0.2.  For esxhost2, 127.0.0.3.

You should be able to make up to ~16 million tunnels this way!

NOTE: When using an SSH tunnel, the vSphere Client will not show the "Hardware" tab for your hosts.