Networking

Unix and Linux network configuration. Multiple network interfaces. Bridged NICs. High-availability network configurations.

Applications

Reviews of latest Unix and Linux software. Helpful tips for application support admins. Automating application support.

Data

Disk partitioning, filesystems, directories, and files. Volume management, logical volumes, HA filesystems. Backups and disaster recovery.

Monitoring

Distributed server monitoring. Server performance and capacity planning. Monitoring applications, network status and user activity.

Commands & Shells

Cool Unix shell commands and options. Command-line tools and application. Things every Unix sysadmin needs to know.

Home » Commands & Shells, Virtualization

Configure and Run esxcli on Red Hat

Submitted by on March 20, 2017 – 3:58 pm

The esxcli utility is used to interface with the vSphere and ESX hosts. It is a useful tool for getting to some basic VMWare functionality from Unix shell. It is also a pre-requisite for some of the server deployment and configuration management tools, such as SaltStack.

Download the current version of VMware-vSphere-CLI from VMWare or version 6. Place it in /tmp and extract. Run the installation script, accept the defaults:

cd /tmp
tar xvfz VMware-vSphere-CLI-6.0.0-2503617.x86_64.tar.gz
cd vmware-vsphere-cli-distrib
./vmware-install.pl

Install Python tools and pre-requisites for esxcli:

Test network connection to the vCenter server:

nc -v -i 1 -w 1 vcenter01 443

Obtain vCenter host’s thumbprint:

esxcli -s vcenter01 -u 'DOMAIN\SvcAccount' -p '********'
 
>> Connect to vcenter01 failed. Server SHA-1 thumbprint: 3E:7D:46:C3:83:7C:80:9F:3A:06:DE:23:F0:FA:EB:48:7C:EC:33:8F (not trusted)

Add the vCenter host and its thumbprint to the local credential store:

/usr/lib/vmware-vcli/apps/general/credstore_admin.pl add --server vcenter01 --username 'DOMAIN\SvcAccount' -p '********'
/usr/lib/vmware-vcli/apps/general/credstore_admin.pl add --server vcenter01 --thumbprint 3E:7D:46:C3:83:7C:80:9F:3A:06:DE:23:F0:FA:EB:48:7C:EC:33:8F

Verify functionality:

esxcli -s vcenter01 -u 'DOMAIN\SvcAccount' -p '*********' --vihost=esxi_host_01 vm process list
 
Sample output:
 
vmrhel701
   World ID: 6458879
   Process ID: 0
   VMX Cartel ID: 6458878
   UUID: 42 3c 02 72 9b 74 87 41-dd c8 b4 7a 96 64 13 c6
   Display Name: vmrhel701
   Config File: /vmfs/volumes/1b48c93f-ad74f785/vmrhel701/vmrhel701.vmx

You can also connect directly to individual ESX hosts, but you will need to add their thumbprints to your local credential store. You can obtain the list of ESX hosts in your datacenter by using PowerCLI:

Set-PowerCLIConfiguration -Scope Session -WebOperationTimeoutSeconds -1 -Confirm:$false;
Import-Module VMware.VimAutomation.Vds;
$VMHost="vcenter01";
Connect-VIServer -Server $VMHost -User 'DOMAIN\SvcAccount' -Password '*********';
Get-VMHost | Select Name | ConvertTo-Csv -NoTypeInformation | % {$_ -replace '"', ""} | Select-Object -Skip 1 | Out-File C:\users\esx_list.txt -Force -Encoding ascii

The script below will loop through a list of ESX hosts, obtain their thumbprints, and add them to the local credential store.

#!/bin/bash
listfile=""
if [ -z "${listfile}" ] || [ ! -r "${listfile}" ]
then
    exit 1
fi
 
username="DOMAIN\SvcAccount"
password="********"
credstoreadmin="/usr/lib/vmware-vcli/apps/general/credstore_admin.pl"
 
for i in $(cat "${listfile}")
do
    echo "Adding ${i}"
    tumbprint="$(esxcli -s "${i}" -u "${username}" -p "${password}" | grep -oE "([A-Z0-9]{2}:){19}[A-Z0-9]{2}")"
    ${credstoreadmin} add --server "${i}" --username "${username}" --password "${password}"
    ${credstoreadmin} add --server "${i}" --thumbprint "${tumbprint}"
done

 

Print Friendly, PDF & Email

No Comment »

1 Pingbacks »

Leave a Reply

%d bloggers like this: