使用 vMA 简单获取在 vCenter Server 上注册的所有虚拟机的列表

使用 vMA 简单获取在 vCenter Server 上注册的所有虚拟机的列表

在我们拥有 VCSA(Vcenter Server Appliance)之前,我们有一个 Windows Vcenter Server。

我们在本地安装了 PowerCLI。

在那里,我们可以说

Get-VM -Name * | Sort-Object | %{
....

获取在 Vcenter 中注册的所有虚拟机的列表。


现在我们有了设备。

我也安装了 vMA(管理助手)。

我注册了 vcenter 设备,并成功连接到它,但无法像上面那样简单地检索虚拟机列表。

它总是希望我连接到单个 ESXi 主机来执行列表。

现在对我来说这似乎是倒退了一步。

你会如何做呢?

你会使用 vMA 吗?也许使用 vCLI?或者坚持使用 PowerCLI,但那样的话,我又需要安装一台 Windows 机器来运行我的脚本了.....

答案1

我没有使用过 vma,但我想它已经为你安装了 vmware Perl SDK(根据这篇文章几乎是贫民窟它应该)。其中有很多实用程序,我认为这个就是你正在寻找的:

vidiscovery.pl

如果您不想每次都输入凭据,那么您需要设置凭证存储第一的。

[编辑] 实际上,我刚刚尝试过,虽然它有点用,但速度很慢,因为它会获取每个实体的所有信息。效率不高。所以我只写了一个很小的脚本,这就是它所需要的:

#!/usr/bin/perl

use strict;
use warnings;

use VMware::VIRuntime;

# read/validate options and connect to the server
Opts::parse();
Opts::validate();
Util::connect();

my $vm_views =
  Vim::find_entity_views(view_type => 'VirtualMachine',
                       properties => ['name'], );

foreach  my $view ( sort @$vm_views) {      
  print $view->{'name'}, "\n";
}

# disconnect from the server
Util::disconnect();                                  

这假定您有一个包含正确信息的 $HOME/.visdkrc 文件:

VI_PROTOCOL=https
VI_SERVER=fqdn
VI_SERVICEPATH=/sdk
VI_USERNAME=username
VI_PASSWORD=pwd

正如您所说,您有 vma,所有库应该已经为您准备好了。此脚本在 1 秒内获取了所有 vm(仅获取其名称)。如果您没有 CA,并且您的虚拟中心有自签名证书,则应首先设置此环境变量,否则运行脚本时 Perl lwp 库将崩溃:

export PERL_LWP_SSL_VERIFY_HOSTNAME=0

答案2

我会使用安装了 PowerCLI 的 Windows PC 或服务器...PowerCLI 是 VMware 的发展方向,因此期望您有一个可用的 Windows 系统来与其交互。

因此,虽然可以在没有 Windows 依赖项的情况下安装 VMware,但事实证明 Windows 实际上是一个依赖项 :)

您还可以使用vCenter API,取决于您计划对虚拟机列表执行的操作……

另请参阅:是否有可能在没有 Windows 的情况下部署 VMware vSphere 5.5?

答案3

还有另一种解决方案:您可以简单地访问直接使用 vCenter DB对于这种东西。

作为参考,这里有一个可以使用 postgres 客户端直接在 VCSA 上执行的单行命令:

/opt/vmware/vpostgres/1.0/bin/psql --pset pager=off --pset footer=off --command 'SELECT name FROM vpx_vm_config_info ORDER BY name;' -U vc VCDB | tail -n +3 | head -n -1 | sed 's/^[ ]*//g'

我分别使用 head、tail 和 sed 来过滤掉令人讨厌的标题、空行和行首的空格。也许有更优雅、更简短的方法来做到这一点,但我不在乎。

优点:

  • 无需额外的 VM(vMA)即可获取 VM 列表。
  • 快速地。

缺点:

  • 有点不合常理。
  • 而且很可能得不到支持。

相关内容