Existem N formas de você gerar um relatório de inventário do ambiente VMware. Gosto muito de utilizar o RV Tools, que não traz apenas dados importantes do ambiente, mas também gera um health check muito bacana.
O problema é a dependência de exportar os dados para um arquivo. Não gosto da idéia de ficar exportando arquivos toda vez que preciso gerar um relatório. Por isso, fiz um script em PowerCLI que gera um relatório do ambiente e exporta para uma página HTML.
Essa é a cara dele:
Se você quiser, pode fazer que nem eu e incrementar mais um pouco. Subi um servidor web, criei outros scripts utilizando a base do primeiro, porém filtrando os resultados com Tags. Algo do tipo:
1 |
Get-VM -Tag "Producao" | Select Name |
Dessa forma consigo visualizar apenas as máquinas de Produção, Homologação etc. Adicionei os scripts ao Task Scheduler do Windows e pronto. Adeus arquivos .csv!
A estrutura do script é a mesma para todos os relatórios. A diferença é que é aplicado um filtro para cada um. Para esse filtro ser possível, você precisa utilizar Tags. Se você não conhece Tags ou ainda usa custom attributes, sugiro que você leia isso.
Para que os relatórios por ambiente funcionem é preciso que anteriormente você tenha “taggeado” as suas máquinas virtuais. Como esse post se trata de uma dica rápida, não vou explicar como criar e aplicar as Tags porque é bem intuitivo e é feito pelo Web Client. Uma estrutura de Tags básica deve conter o seguinte:
Sem mais delongas, segue o script.
Sinta-se à vontade para customizar à sua necessidade 🙂
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# Script criado por Pedro Calixto - blog.pedrocalixto.com # Altere os campos abaixo com os dados do seu ambiente. Add-PSSnapin VMware.VimAutomation.Core #Variaveis do ambiente $vCenterIPorFQDN="IP ou FQDN do vCenter" $vCenterUsername="Usuário do vCenter" $vCenterPassword="Senha do vCenter" $LocationName="Nome do datacenter" $ClusterName="Nome do cluster" $OutputPath="C:\relatorios" Write-Host "Conectando-se ao vCenter" Connect-VIServer -Server $vCenterIPorFQDN -User $vCenterUsername -Password $vCenterPassword #CSS $Css="<style> body { font-family: Verdana, sans-serif; font-size: 14px; color: #666666; background: #FEFEFE; } #title{ color:#FF0000; font-size: 30px; font-weight: bold; padding-top:25px; margin-left:35px; height: 50px; } #subtitle{ font-size: 11px; margin-left:35px; } #main { position:relative; padding-top:10px; padding-left:10px; padding-bottom:10px; padding-right:10px; } table{ width:100%; border-collapse:collapse; } table td, table th { border:1px solid #FA5858; padding:3px 7px 2px 7px; } table th { text-align:left; padding-top:5px; padding-bottom:4px; background-color:#FA5858; color:#fff; } table tr.alt td { color:#000; background-color:#F5A9A9; } </style> " #Ferramentas para formatar a pagina com o CSS $BoxContentOpener="<div id='boxcontent'>" $PageBoxCloser="</div>" $br="<br>" #Obtem dados das VMs $GetVmCluster=Get-VM -Location (Get-Cluster -Name $ClusterName) | Select-Object @{N="Nome";E={$_.Name}},@{N="Status";E={$_.PowerState}},@{N="IP";E={@($_.guest.IPAddress[0])}},@{N="Descricao";E={$_.Notes}},@{N="Tags";E={((Get-TagAssignment -Entity $_ | select -ExpandProperty Tag).Name -join ",")}} | Sort-Object Nome | ConvertTo-HTML -Fragment #Gera relatorio HTML ConvertTo-Html -Title "Inventario de VMs" -Head "<div id='title'>Inventario completo de VMs</div>$br<div id='subtitle'> Relatorio gerado em: $(Get-Date) </div> $br " -Body "$Css $BoxContentOpener $GetVmCluster $PageBoxCloser" | Out-File $OutputPath\vms.html |
Espero que ajude.
Até mais!
Olá Pedro, muito obrigado pelo código, no meu caso foi muito útil o esquema para gerar um relatório de ativos no ambiente aonde eu trabalho.