Basta obter uma lista de todas as VMs registradas no vCenter Server usando o vMA

2

Antes de termos o VCSA (Vcenter Server Appliance), tínhamos um Windows Vcenter Server.

O PowerCLI foi instalado localmente.

Lá, poderíamos dizer

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

para obter uma lista de todas as VMs registradas no Vcenter.

Agora temos o appliance.

Eu instalei o vMA (assistente de gerenciamento) também.

Registrei o appliance vcenter, estou conectado a ele com sucesso, mas não consigo recuperar uma lista de VMs como acima.

Sempre quer que eu me conecte a um único host do ESXi para realizar uma listagem.

Agora, para mim, isso parece um retrocesso.

Como você faria isso?

Você usaria o vMA? Talvez use vCLI? Ou ficar com PowerCLI, mas eu precisaria novamente para instalar uma máquina Windows apenas para executar meus scripts .....

    
por Marki 10.09.2014 / 11:52

3 respostas

2

Eu não tenho experiência com o vma, mas suponho que ele tenha o vmware Perl SDK instalado para você (de acordo com este post virtualmente gueto deveria. Nele você tem muitos utilitários e acho que esse é o que você está procurando:

vidiscovery.pl

Se você não deseja inserir as credenciais todas as vezes, é necessário configurar o credendial store primeiro.

[edit] Na verdade, eu apenas tentei e, embora funcione, é muito lento, porque recebe todas as informações sobre cada entidade. Não é muito eficiente. Então, eu acabei de escrever um script bem pequeno e isso é tudo:

#!/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();                                  

Isso pressupõe que você tenha um arquivo $ HOME / .visdkrc no lugar com as informações corretas:

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

E como você disse que tem o vma, todas as bibliotecas já devem estar lá para você. Este script me pega todos os vm's (apenas seus nomes em menos de 1 segundo). Se você não tiver uma CA no lugar e seu centro virtual tiver um certificado auto-assinado, você deverá definir esse envvar primeiro ou a biblioteca Perl lwp será bombardeada ao executar o script:

export PERL_LWP_SSL_VERIFY_HOSTNAME=0
    
por 10.09.2014 / 19:24
3

Eu usaria um PC com Windows ou um servidor com PowerCLI instalado ... O PowerCLI é onde o momento está com o VMware, portanto, a expectativa é de que você tenha um sistema Windows disponível para fazer a interface com ele.

Portanto, embora seja possível instalar o VMware sem uma dependência do Windows, o Windows é, na verdade, uma dependência:)

Você também pode usar a API do vCenter , dependendo do que você planeja fazer com a lista de máquinas virtuais ...

Veja também: É possível implantar o VMware vSphere 5.5 sem o Windows?

    
por 10.09.2014 / 14:27
0

Há outra solução: você pode simplesmente acessar o vCenter DB diretamente para esse tipo de coisa.

Para referência, aqui está um one-liner que pode ser executado diretamente no VCSA usando o cliente postgres:

/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'

Estou usando head, tail e sed para filtrar cabeçalhos desagradáveis, linhas vazias e espaços no início da linha, respectivamente. Talvez haja uma maneira mais elegante e mais curta de fazer isso, mas eu não me importo.

Prós:

  • Nenhuma VM extra (vMA) necessária para obter uma lista de VMs.
  • Rápido.

Contras:

  • Um tanto hacky.
  • E provavelmente sem suporte.
por 11.09.2014 / 18:29