【VMware vSphere】使用Managed Object Browser(MOB)浏览vSphere相关对象。
Managed Object Browser(MOB)是一个和vSphere(ESXi和vCenter)捆绑在一起的工具,可以直观的浏览或查询vSphere当中各种对象的信息,比如集群、主机以及虚拟机等。这些对象包含多个属性,我们可以通过这些属性了解相关对象的详细信息,比如对象的状态、配置以及结构等。同时,在不同的对象里,还可以通过“Invoke Method”调用参数指定某些属性或者执行一项特定的任务,比如关闭虚拟机和创建快照等。
Managed Object Browser(MOB)访问地址是https://vcsa-IP-or-FQDN/mob,在vCenter的地址后面增加mob即可直接访问它。或者,也可以登录https://vcsa-IP-or-FQDN/,点击右边的“浏览 vSphere 管理的对象”进行访问。
如果是独立的ESXi主机,默认情况下Managed Object Browser(MOB)服务是关闭的,我们需要在高级设置里面将MOB配置(Config.HostAgent.plugins.solo.enableMob)的值修改为TRUE,浏览器输入https://esxi-FQDN-or-IP/mob皆可进行访问。
输入vCenter Server的SSO管理员和密码或者ESXi的ROOT管理员和密码登录MOB后,MOB的界面如下图所示。
在使用MOB之前,先来了解一下Managed Object Browser(MOB)工具的组件构成:
- Managed Object Type(托管对象类型):vCenter中对应的对象类型,如数据中心Datacenter、主机HostSystem以及虚拟机VirtualMachine等。
- Managed Object ID(托管对象 ID):vCenter中给某一个对象生成的唯一ID,也叫MOID。
- Data Object Type(数据对象类型):某一个对象内属性下的子对象,为父属性中的Type值。
- Parent Managed Object ID(托管对象父 ID):某一个对象内具有一个或多个子对象,则子对象具有上一个对象的父ID。
- Property Path(属性路径):标识当前对象所在的属性名称,为父属性中的Value值。
- Properties(属性):某一个对象内具有一个或多个属性,包含该属性的名字、类型以及值。
- Methods(操作):某一个对象内存在对该对象的一个或多个Method,则可以使用Invoke调用参数执行任务。
当安装完vCenter Server后,默认情况下会创建一个实例,或者说叫站点,这个实例的名字在vSphere Client中显示的是vCenter Server的FQDN或者IP地址,然后再在这个实例下面创建数据中心、集群以及虚拟机等。在MOB当中,这个默认实例叫ServiceInstance,在这个ServiceInstance下面会有一个默认的文件夹Folder,这个文件夹下面才是数据中心Datacenter(默认情况下,必须要先创建数据中心),数据中心可以创建一个或者多个,在每个数据中心下面有四个文件夹Folder,分别对应vCenter中的计算、虚拟机、网络、存储板块。在这四个文件夹(或者四种资源)下面具有其他的对象,比如计算文件夹下面有主机对象、资源池对象;在虚拟机文件夹下面有虚拟机对象、虚拟APP对象;在网络文件下面有标准交换机、分布式交换机等对象;在存储文件夹下面有存储集群、本地存储等对象。这些所有对象构成了vCenter中的清单,MOB就是基于这个清单对象进行使用的。
实际上,vSphere中vCenter Server和ESXi主机中所具备的MOB清单对象并不一样,不是说名字不一样,而是vCenter Server和ESXi主机因为所在的视角不一样,所以对象清单会不同,有点类似于两者之间所支持的功能不同一样,下面列出了两者的所具备对象清单的差别:
对象类型 | ESXi清单 | vCenter清单 |
ClusterComputeResource | 不具有。从ESXi角度看,看不到这种对象类型。 | 具有多个。支持创建多个集群。可以看到多个。 |
ComputeResource | 一个。从ESXi角度看,只能看到主机自身。 | 具有多个。支持添加多个主机。可以看到多个。 |
Datacenter | 一个。从ESXi角度看,只能看到主机所在的数据中心。 | 具有多个。支持创建多个数据中心。可以看到多个。 |
Datastore | 具有多个。从ESXi角度看,主机上面可以有多个存储。 | 具有多个。支持添加多个数据存储。可以看到多个。 |
DistributedVirtualSwitch | 具有多个。从ESXi角度看,主机上面可以创建多个分布式交换机。 | 具有多个。支持创建多个虚拟交换机。可以看到多个。 |
Folder | 一个。从ESXi角度看,主机上面只能看到一个文件夹。 | 具有多个。支持创建多个虚拟机文件夹。可以看到多个。 |
HostSystem | 一个。从ESXi角度看,只能看到主机本身。 | 具有多个。支持添加多个主机。可以看到多个。 |
Network | 具有多个。从ESXi角度看,可以看到多个标准网络交换机。 | 具有多个。支持添加多个虚拟机交换机。可以看到多个。 |
ResourcePool | 具有多个。从ESXi角度看,可以看到多个资源池。 | 具有多个。支持添加多个资源池。可以看到多个。 |
VirtualApp | 不具有。从ESXi角度看,看不到这种对象类型。 | 具有多个。支持添加多个vAPP。可以看到多个。 |
VirtualMachine | 具有多个。从ESXi角度看,主机上面可以有多个虚拟机。 | 具有多个。支持创建多个虚拟机。可以看到多个。 |
注:上面的角度是从MOB出发,在ESXi或vCenter清单下所支持看到的不同对象类型,不是指功能。比如,在ESXi主机加入了vCenter创建的分布式交换机的情况下支持查看DistributedVirtualSwitch对象。
登录vSphere Client,我们可以点击vCenter中不同的对象,在浏览器地址栏中,即可看到不同的对象类型(Managed Object Type)以及MOID。比如Folder:group-d1中,Folder表示对象类型,group-d1表示MOID,这是全局唯一的ID,我们可以使用 https://vcenter.mulab.local/mob/?moid= 后面加MOID直接在MOB当中访问指定对象。
在了解的MOB当中的组件以及对象类型后,下面我们到MOB中详细去看一下。
ServiceInstance 托管对象是清单实例中的根对象,由vSphere创建,所有清单对象基于它进行创建。在ServiceInstance 托管对象下包含capability、content以及serverClock属性,capability表示API定义的功能范围,content中提供各种Manager服务,基于这些管理器可以遍历整个vSphere清单实体,serverClock包含最近从服务器获取的时间,时间不一定是实时的,若要获取当前时间,ServiceInstance 托管对象下提供了Methods的CurrentTime。当前对象下,还包含CurrentTime(获取当前时间)、QueryVMotionCompatibility(查询虚拟机与一组主机的VMotion兼容性,已弃用)、RetrieveProductComponents(检索捆版产品的组件)、RetrieveServiceContent(检索服务content实例的属性,包括各种Manager)、ValidateMigration(检查虚拟机迁移的有效性,已弃用)等Methods。这些内容可以在Managed Object - ServiceInstance中找到。
Content属性是MOB中最核心的部分,点击以后我们可以看到以下内容,关于每个Manager的介绍以及使用方法可以在Data Object - ServiceContent中找到,其中rootFolder就是清单对象中的根Folder对象。
NAME | TYPE | VALUE |
---|---|---|
about | AboutInfo | about |
accountManager | ManagedObjectReference:HostLocalAccountManager | Unset |
alarmManager | ManagedObjectReference:AlarmManager | AlarmManager |
authorizationManager | ManagedObjectReference:AuthorizationManager | AuthorizationManager |
certificateManager | ManagedObjectReference:CertificateManager | certificateManager |
clusterProfileManager | ManagedObjectReference:ClusterProfileManager | ClusterProfileManager |
complianceManager | ManagedObjectReference:ProfileComplianceManager | MoComplianceManager |
cryptoManager | ManagedObjectReference:CryptoManagerKmip | CryptoManager |
customFieldsManager | ManagedObjectReference:CustomFieldsManager | CustomFieldsManager |
customizationSpecManager | ManagedObjectReference:CustomizationSpecManager | CustomizationSpecManager |
datastoreNamespaceManager | ManagedObjectReference:DatastoreNamespaceManager | DatastoreNamespaceManager |
diagnosticManager | ManagedObjectReference:DiagnosticManager | DiagMgr |
dvSwitchManager | ManagedObjectReference:DistributedVirtualSwitchManager | DVSManager |
eventManager | ManagedObjectReference:EventManager | EventManager |
extensionManager | ManagedObjectReference:ExtensionManager | ExtensionManager |
failoverClusterConfigurator | ManagedObjectReference:FailoverClusterConfigurator | FailoverClusterConfigurator |
failoverClusterManager | ManagedObjectReference:FailoverClusterManager | FailoverClusterManager |
fileManager | ManagedObjectReference:FileManager | FileManager |
guestCustomizationManager | ManagedObjectReference:VirtualMachineGuestCustomizationManager | GuestCustomizationManager |
guestOperationsManager | ManagedObjectReference:GuestOperationsManager | guestOperationsManager |
healthUpdateManager | ManagedObjectReference:HealthUpdateManager | HealthUpdateManager |
hostProfileManager | ManagedObjectReference:HostProfileManager | HostProfileManager |
hostSpecManager | ManagedObjectReference:HostSpecificationManager | HostSpecificationManager |
ioFilterManager | ManagedObjectReference:IoFilterManager | IoFilterManager |
ipPoolManager | ManagedObjectReference:IpPoolManager | IpPoolManager |
licenseManager | ManagedObjectReference:LicenseManager | LicenseManager |
localizationManager | ManagedObjectReference:LocalizationManager | LocalizationManager |
overheadMemoryManager | ManagedObjectReference:OverheadMemoryManager | OverheadMemoryManager |
ovfManager | ManagedObjectReference:OvfManager | OvfManager |
perfManager | ManagedObjectReference:PerformanceManager | PerfMgr |
propertyCollector | ManagedObjectReference:PropertyCollector | propertyCollector |
rootFolder | ManagedObjectReference:Folder | group-d1 (Datacenters) |
scheduledTaskManager | ManagedObjectReference:ScheduledTaskManager | ScheduledTaskManager |
searchIndex | ManagedObjectReference:SearchIndex | SearchIndex |
serviceManager | ManagedObjectReference:ServiceManager | ServiceMgr |
sessionManager | ManagedObjectReference:SessionManager | SessionManager |
setting | ManagedObjectReference:OptionManager | VpxSettings |
siteInfoManager | ManagedObjectReference:SiteInfoManager | SiteInfoManager |
snmpSystem | ManagedObjectReference:HostSnmpSystem | SnmpSystem |
storageQueryManager | ManagedObjectReference:StorageQueryManager | StorageQueryManager |
storageResourceManager | ManagedObjectReference:StorageResourceManager | StorageResourceManager |
taskManager | ManagedObjectReference:TaskManager | TaskManager |
tenantManager | ManagedObjectReference:TenantTenantManager | TenantManager-23319993 |
userDirectory | ManagedObjectReference:UserDirectory | UserDirectory |
vStorageObjectManager | ManagedObjectReference:VcenterVStorageObjectManager | VStorageObjectManager |
viewManager | ManagedObjectReference:ViewManager | ViewManager |
virtualDiskManager | ManagedObjectReference:VirtualDiskManager | virtualDiskManager |
virtualizationManager | ManagedObjectReference:VirtualizationManager | Unset |
vmCompatibilityChecker | ManagedObjectReference:VirtualMachineCompatibilityChecker | CompatChecker |
vmProvisioningChecker | ManagedObjectReference:VirtualMachineProvisioningChecker | ProvChecker |
打开Folder对象(MOID为group-d1)后,可以看到包含的Properties和Methods,关于属性的介绍以及Methods的使用方法可以查看Managed Object - Folder。
比如说在Folder属性中,提供了AddStandaloneHost_Task的Methods,我们打开这个操作,可以看到如下图所示。在Parameters参数下面,有三列,第一列为参数的名字,第二列为参数的类型,第三列为参数的VAlUE值。其中在参数的第一列NAME下,如果名字后是required代表该参数是必填项,如果名字后是optional代表该参数是可选项。最后,当所有值都填入以后,点击Invoke Method应用操作。
关于这个Methods中的参数的介绍和说明如下,我可以在Folder属性中找到所对应的methods,这在不同的清单属性中会有不同的介绍。
拿CreateDatacenter Methods举一个例,打开后看到具有如下参数。只需要设定Name参数,即可Invoke Method。
执行后,再刷新Folder对象,可以看到刚刚的Methods已经执行成功并完成创建。
我们来看看CreateDatacenter的介绍,通过该Methods我们可以在Folder对象下创建数据中心对象,这对应上面所说的vSphere清单结构。该Methods中的Parameters参数中具有NAME参数,类型为xsd:string,后面描述了string的要求;Return Value表示运行Invoke Method后返回的值,我们上面返回的值就是我们创建的数据中心名字的全局唯一MOID,不同的Methods会有返回不同的值;Faults表示返回的错误,当前CreateDatacenter操作可能存在四种类型的Fault错误,比如说第一种类型DuplicateName表示CreateDatacenter操作中输入的参数NAME值在当前清单对象中已经存在;Events表示执行操作法发生的事件,WSDL表示当前Methods的XML类型格式。
在Folder对象属性中,再点击childEntity托管对象类型Datacenter后,可以看到数据中心属性中的四个文件夹,分别对应四种类型。
了解清单对象中的属性以及操作后,我知道该如何查看以及如果通过MOB对某些对象进行某些Methods,但是vSphere清单对象如此庞大,而Methods非常之多,我们该如何知道怎么使用呢?通过下面的快速查询网页,我们就可以了解不同的清单对象以及对象中不同Methods操作使用方法。这些快速查询位于vdc-repo或vdc-download中。
通过 Managed Object Types 查询(Quick Index)所有的托管对象类型。
通过 Data Object Types 查询(Quick Index)所有的数据对象类型。
通过 Enumerated Types 查询(Quick Index)所有的枚举类型。
通过 Fault Types 查询(Quick Index)Methods返回的所有的错误类型。
通过 All Types 查询(Quick Index)上面的所有类型。
通过 All Methods 查询(Quick Index)上面的所有清单对象中的Methods。
通过 All Properties 查询(Quick Index)上面的所有清单对象中的Properties属性。
通过 All Enumerations 查询(Quick Index)上面的所有清单对象中的枚举(枚举是一种数据结构,用于存储预定义值(通常是字符串))。
参考: