I have just read very informative blog post "
Adding new vNICs in UCS changes vmnic order in ESXi". The author (Michael Rudloff) is using localcli with undocumented functions to achieve correct NIC order. So what is this
localcli? All vSphere admins probably know
esxcli command for ESXi configuration.
esxcli manages many aspects of an ESXi host. You can run ESXCLI commands remotely or in the ESXi Shell.
You can use esxcli in following three ways
- vCLI package.Install the vCLI package on the server of your choice, or deploy a vMA virtual machine and target the ESXi system that you want manipulate. You can run ESXCLI commands against a vCenter Server system and target the host indirectly. Running against vCenter Server systems by using the -vihost parameter is required if the host is in lockdown mode.
- ESXi shell. Run ESXCLI commands in the local ESXi shell to manage that host.
- You can also run ESXCLI commands from the vSphere PowerCLI prompt by using the Get-EsxCli cmdlet.
So esxcli is well known but what about
localcli. Based on
VMware documentation, it is a set of commands for use with VMware Technical Support.
localcli commands are equivalent to ESXCLI commands, but bypass hostd. The localcli commands are only for situations when hostd is unavailable and cannot be restarted. After you run a localcli command, you must restart hostd. Run ESXCLI commands after the restart.
Warning: If you use a localcli command in other situations, an inconsistent system state and potential failure can result.
So it is obvious that usage of LOCALCLI is unsupported and should be used only when instructed by VMware Support.
However, the command is very interesting because when you use special
internal plugin directory some undocumented namespaces will appear. You can browse these namespaces and discover some cool functionality. Just login to your ESXi and use command
localcli --plugin-dir /usr/lib/vmware/esxcli/int/
[root@esx11:~] localcli --plugin-dir /usr/lib/vmware/esxcli/int/
Usage: localcli [disp options]
For esxcli help please run localcli --help
Available Namespaces:
boot operations for system bootstrapping
debug Options related to VMkernel debugging. These commands should be used at the direction of VMware Support Engineers.
device Device manager commands
deviceInternal Device layer internal commands
elxnet elxnet esxcli functionality
esxcli Commands that operate on the esxcli system itself allowing users to get additional information.
fcoe VMware FCOE commands.
graphics VMware graphics commands.
hardware VMKernel hardware properties and commands for configuring hardware.
hardwareinternal VMKernel hardware properties and commands for configuring hardware, which are not exposed to end users.
iscsi VMware iSCSI commands.
network Operations that pertain to the maintenance of networking on an ESX host. This includes a wide variety of commands
to manipulate virtual networking components (vswitch, portgroup, etc) as well as local host IP, DNS and general
host networking settings.
networkinternal Operations used by partner software, but are not exposed to the end user. These operations must be kept compatible
across releases.
rdma Operations that pertain to remote direct memory access (RDMA) protocol stack on an ESX host.
rdmainternal Operations that pertain to the remote direct memory access (RDMA) protocol stack on an ESX host, but are not
exposed to the end user. These operations must be kept compatible across releases.
sched VMKernel system properties and commands for configuring scheduling related functionality.
software Manage the ESXi software image and packages
storage VMware storage commands.
system VMKernel system properties and commands for configuring properties of the kernel core system and related system
services.
systemInternal Internal VMKernel system properties andcommands for configuring properties of the kernel core system.
user VMKernel properties and commands for configuring user level functionality.
vm A small number of operations that allow a user to Control Virtual Machine operations.
vsan VMware Virtual SAN commands
Available Commands:
Let me tell you again that this command is unsupported, therefore do not use it in production. On the other hand, it is very cool to test it in our labs ...