I’ve been asked several times if the new ESXCLI command in 5.0 eliminates the need for vCLI. It doesn’t, as a matter of fact the new ESXCLI command is part of the vCLI. I think where the confusion comes is because the ESXCLI command is also included with the ESXi Shell. Which brings up the question do you need both? And the answer is you do, let me explain…
When we talk about the new ESXCLI command we like to emphasize that for the first time the same command can be used for both local and remote CLI administration. Technically speaking this statement is a bit misleading because although you can run ESXCLI commands both locally and remotely, there are actually two versions of the command – one that runs in the ESXi Shell and one that runs remotely as part of vCLI.
- ESXi Shell – Every ESXi host comes with a version of the ESXCLI command in its ESXi shell. This command can only be used to perform local administration of the host. When working with the local version of the ESXCLi command you don’t need to specify a target host because the local host is always assumed. If you were to try and specify a remote host you would get an error because the ESXCLI command in the local shell doesn’t support working remotely.
- vCLI – Along with the local version of the ESXCLI command there is a remote version provided with the vCLI that is used for remote administration. While the command syntax is largely the same as the local version, when working remotely you need to provide additional connection options to specify the target ESXi host along with the user credentials.
So yes, you can run ESXCLI commands both locally and remotely. However, there are actually two different versions of the command – one for working locally from the ESXi Shell and another when working remotely with the vCLI. The only difference between the two is when working locally the local host and logged in user credentials are assumed, and when working remotely you need to specify the target host and user credentials.
Where does the vMA fit in all this? The vMA is simply a Linux appliance that has the vCLI pre-installed. Prior to 5.0 the vMA was based on RHEL but starting with 5.0 it’s now based on SLES. The vMA makes using the vCLI easy, you simply deploy the OVF and your off and running. However, if you don’t want to use the appliance you can just as easily deploy your own Linux VM and install the vCLI packages yourself. There is even a version of vCLI that can be installed on Windows as well, something many people don't realize.
Speaking of Windows, where does PowerCLI fit in all this? Think of PowerCLI as an alternative to vCLI. Most Windows admins tend to prefer PowerCLI because it’s built on top of PowerShell. vCLI on the other hand tends to be more popular with Linux admins because it has a Linux look and feel.
I hope this helps clear up some of the confusion.