Источник: Major Enhancements in esxcli for vSphere 5


Команда esxcli в VMware vSphere 5 претерпела значительное обновление по сравнению с версией VMware vSphere 4.1, в которой было только 6 основных namespaces и 43 команды.


 

NamespaceDescription
corestorageVMware core storage commands
networkVMware networking commands
nmpVMware Native Multipath Plugin (NMP) This is the VMware default implementation of the Pluggable Storage Architecture
swiscsiVMware iSCSI commands
vaaiVaai Namespace containing vaai code
vmsLimited Operations on Virtual Machines


С последним релизом vSphere 5, esxcli теперь включает в общей сложности 10 namespaces и 251 команду! Некоторые пространства имен (англ. namespaces), из vSphere 4.1, такие как corestorage, теперь располагаются под новым пространством имен storage, который содержит в себе и другие пространства имен, имеющие отношение к storage стеку.


 

NamespaceDescription
esxcliCommands that operate on the esxcli system itself allowing users to get additional information
fcoeVMware FCOE commands
hardwareVMKernel hardware properties and commands for configuring hardware
iscsiVMware iSCSI commands
licenseOperations pertaining to the licensing of vmware and third party modules on the ESX host. These operations currently only include updating third party module licenses
networkOperations 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 hsot networking settings
softwareManage the ESXi software image and packages
storageVMware storage commands
systemVMKernel system properties and commands for configuring properties of the kernel core system
vmA small number of operations that allow a user to Control Virtual Machine operations


Для получения полного списка доступных команд esxcli в VMware vSphere 5 вы можете выполнить следующую команду:

# esxcli esxcli command list

Основной целью esxcli является предоставление централизованного, удобного и легкого доступа к управлению хостами ESXi, как локально, в пределах ESXi Shell, так и удаленно, с помощью vCLI или vMA. С выходом vSphere 5.0 большинство функций команд esxcfg-*/vicfg-* были перенесены в esxcli. В недалеком будущем esxcli приобретет полный набор функций, и команды esxcfg-*/vicfg-* попросту устареют и будут удалены. В том числе, устареют и будут удалены утилиты esxupdate и vihostupdate.


Новая версия esxcli для удаленного управления совместима как с ESXi 5, так и с ESX(i) 4.1 хостами. При подключении к хосту VMware ESXi с использованием esxcli, хост автоматически выдаcт список поддерживаемых namespaces. Новые namespaces, реализованные в ESXi 5, не будут доступны на хосте 4.1, но при этом прежние namespaces (4.1) будут доступны. В последней версии esxcli, vSphere API по прежнему скрыт. Поэтому, для того чтобы получить доступ к esxcli (имеется в виду из скриптов), вам по-прежнему нужно использовать локальный (local) esxcli, либо vCLI, vMA или PowerCLI's esxcli командлеты для удаленного использования.


Синтаксис esxcli очень прост для понимания:

esxcli01.png

Чтобы получить более подробную информацию о пространстве имен, вам просто нужно указать опцию --help после нужного вам пространства имен. На диаграмме ниже наглядно показано, как с помощью опции --help можно получить справочную информацию. В данном случае мы получаем список дополнительных namespaces для пространства имен "network".

esxcli1.png

Для того, чтобы получить более детальную информацию о пространстве имен "firewall" можно также воспользоваться опцией --help.

esxcli2.png

Теперь, когда у нас есть список команд (для фаервола см. скриншот выше), мы можем попробовать выполнить какую-либо из них. Пусть этой командой будет "get".

esxcli3.png

Как вы уже могли догадаться, команда "get" выдает текущий статус межсетевого экрана (firewall). В основном, многие команды интуитивно понятны. Вы увидите, что большинство esxcli namespaces поддерживают команды get, set и list. Другой приятной вещью в esxcli является совместимый результирующий вывод. Это относится как к локальному, так и к удаленному применению. Теперь скрипты писать будет проще.


Вы так же имеете возможность контролировать тип вывода, который генерирует команда esxcli. В качестве типа вы можете выбрать: XML, CSV или ключ-значение (key-value). Чтобы esxcli начала выдавать результат своей работы в нужном нам формате, необходимо в параметре --formatter указать соответствующий тип. Пара xml и ключ-значение работает для всех пространств имен, а csv не для всех, но для большинства.


Итак, для примера давайте выполним предыдущую команду (esxcli network firewall get), только на этот раз изменим тип результирующего вывода на пару ключ-значение.

# esxcli --formatter=keyvalue network firewall get
 
Firewall.DefaultAction.string=DROP
Firewall.Enabled.boolean=false
Firewall.Loaded.boolean=true

В дополнение к типу формата вы можете отображать только определенные, нужные вам столбы, используя для этого --format-param.


Вот пример того, как выглядит список Standard vSwitches без форматирования:

# esxcli network vswitch standard list

vSwitch0
Name: vSwitch0
Class: etherswitch
Num Ports: 128
Used Ports: 6
Configured Ports: 128
MTU: 1500
CDP Status: listen
Beacon Enabled: false
Beacon Interval: 1
Beacon Threshold: 3
Beacon Required By:
Uplinks: vmnic1, vmnic0
Portgroups: ESXSecretAgentNetwork, VM Network, vmk2, vmk1,
Management Network

vSwitch1
Name: vSwitch1
Class: etherswitch
Num Ports: 128
Used Ports: 3
Configured Ports: 128
MTU: 1500
CDP Status: listen
Beacon Enabled: false
Beacon Interval: 1
Beacon Threshold: 3
Beacon Required By:
Uplinks: vmnic2
Portgroups: VMkernel

Вот этот же пример, но на этот раз отображается только: Имя, Количество Портов, MTU, CDP и Порт-группа. Это достигается за счет использования formatter и format-param параметров:

# esxcli --formatter=csv --format-param=fields="Name,Num Ports,MTU,CDP,
Portgroups" network vswitch standard list

Name,NumPorts,MTU,Portgroups,
vSwitch0,128,1500,"ESXSecretAgentNetwork,VM Network,vmk2,vmk1,
Management Network,",
vSwitch1,128,1500,"VMkernel,",

Для получения дополнительной информации вы можете обратиться к официальному документу:

Также вы можете прочитать предыдущий мой пост на эту же тему New Command-Line Interface.