在使用VCSA(Vcenter Server Appliance)之前,我们安装了Windows Vcenter Server。
我们在本地安装了PowerCLI。
在那里,我们可以说
Get-VM -Name * | Sort-Object | %{ ....
获取在Vcenter中注册的所有虚拟机的列表。
现在我们有了装置。
我也安装了vMA(pipe理助理)。
我注册了vcenter设备,我成功连接到它,但我无法简单地检索像上面的VM列表。
它总是希望我连接到单个ESXi主机来执行列表。
对我来说,这似乎是一个倒退。
你会怎么做?
你会使用vMA吗? 也许使用vCLI? 或者坚持使用PowerCLI,但是之后我需要再安装一个Windows机器来运行我的脚本…..
我没有vma的经验,但我想它已经为你安装了vmware的Perl SDK(根据这个post虚拟贫民窟它应该)。 在这里你有很多的utils,我认为这是你正在寻找的一个:
vidiscovery.pl
如果您不希望每次都input证书,则需要先设置证件店 。
其实,我只是尝试了它,虽然它的作品,它是非常缓慢,因为它获得有关每个实体的所有信息。 效率不高 所以我只写了一个非常小的脚本,这是所需要的一切:
#!/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秒以内)。 如果你没有一个CA,并且你的虚拟中心有一个自签名的证书,你应该首先设置这个envvar,否则当运行脚本时,Perl lwp库将被popup:
export PERL_LWP_SSL_VERIFY_HOSTNAME=0
我将使用安装了PowerCLI的Windows PC或服务器… PowerCLI是VMware的发展动力,因此期望您可以使用Windows系统与其进行交互。
所以虽然可以在没有Windows依赖的情况下安装VMware,但事实certificate,Windows实际上是依赖项:)
您也可以使用vCenter API ,具体取决于您打算如何处理虚拟机列表…
另请参阅: 是否可以在没有Windows的情况下部署VMware vSphere 5.5?
还有另一种解决scheme:您可以直接访问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 | 头-n-1 | sed's / ^ [] * // g'
我使用head,tail和sed来分别在行的开始处过滤掉讨厌的标题,空行和空格。 也许有一个更优雅,更短的方式来做到这一点,但我不在乎。
优点:
缺点: