Na semana passada, exploramos uma automação na instalação do VMware ESXi, agilizando o processo de reconstruir seus hosts. Se você acompanhou o tutorial passado, agora está munido com o conhecimento para criar pendrives prontos para instalação do ESXi sem intervenção manual, poupando tempo e garantindo consistência. Se não sabe do que estou falando, basta clicar AQUI.
Neste novo artigo, vou avançar para algo um pouco mais abrangente. A proposta é ir além da instalação do ESXi, adentrando no coração do ambiente vSphere, onde a verdadeira mágica da virtualização acontece.
Meu objetivo é proporcionar uma compreensão abrangente de como o PowerCLI, a poderosa ferramenta de automação da VMware, pode não apenas simplificar, mas também aprimorar a gestão e configuração do ambiente vSphere. Este artigo será um guia passo-a-passo para a implementação de um ambiente VMware vSphere utilizando scripts PowerCLI, agregando valor à infraestrutura existente.
Se antes falei sobre simplificar a instalação do VMware ESXi, agora é hora de montar um home lab com orquestração e gerenciar um ecossistema vSphere completo, automatizando processos que as vezes se tornam repetitivos.
Vasculhando arquivos antigos no meu HD, eu encontrei um script do Ricardo Conzatti para criar um cluster vSphere utilizando ambiente de laboratório Nested, esse script é de 2017 onde ele estava utilizando o vSphere 6.5.
Eu resolvi então ressuscitar, adaptando para minha realidade do meu home lab que é bare-metal, e como todos sabem, cada organização se difere uma da outra, possuem requisitos e infraestrutura diferente.
Também não pretendo explicar cada item do script, senão este artigo viraria um grande e-book. Acredito que seja mais produtivo explicar o cenário da VMBeans, minha empresa fictícia na qual citei na página do meu home lab AQUI, onde iremos apresentar nosso caso de uso.
VMBeans Cafeteria – Caso de Uso
A VMBeans Cafeteria possui 03 hosts VMware ESXi, onde cada um possui 03 vmnics e 04 dispositivos de armazenamento conforme abaixo:
vmnic0 = 10 Gbps
vmnic1 = 1 Gbps
vmnic2 = 1 Gbps
01 NVMe = 500 GB
01 SSD = 4 TB
01 SSD = 1 TB
A VMBeans deseja otimizar sua infraestrutura, e irá utilizar a VMware e seus produtos como solução. Ela busca não apenas aprimorar seu ambiente, mas também garantir estabilidade, agilidade e eficiência em suas operações. A VMBeans me solicitou que eu apresentasse quais recursos e soluções da VMware que podemos utilizar. Tendo em vista o cenário proposto, eu elenquei os itens abaixo com suas abordagens:
VMware vMotion: O vMotion é o recurso base para a migração de máquinas virtuais em tempo real entre servidores físicos (hosts ESXi), sem interrupção perceptível para a operação. Na VMBeans, essa capacidade significa flexibilidade e a possibilidade de ajustar recursos de forma dinâmica, realizando manutenções sem impacto no serviço. Afinal, não queremos ter que desligar maquina virtuais alocadas em um determinado host ESXi para realizar a aplicação de patchs por exemplo.
VMware vSphere Distributed Switch (vDS): O vDS é uma solução de rede virtual que simplifica e centraliza o controle da rede. Com o vDS teremos uma gestão mais eficiente de conectividade, permitindo políticas de rede centralizadas de maneira mais simples, economizando tempo e reduzindo erros operacionais. Inclui monitoramento de tráfego, estatísticas de porta e recursos avançados de análise de rede.
VMware High Availability (HA): Com o HA, teremos garantia de uma disponibilidade contínua, minimizando o tempo de inatividade, detectando falhas de hardware e reiniciando automaticamente máquinas virtuais afetadas em outros servidores físicos (hosts ESXi), mantendo os serviços ativos e a empresa em operação.
VMware Distributed Resource Scheduler (DRS): Ter o balanceamento automático da carga de trabalho entre servidores físicos (hosts ESXi), assegurando melhor utilização de recursos, prevenindo sobrecargas e melhorando a estabilidade do ambiente, é algo crucial em uma infraestrutura de virtualização.
VMware vSAN: A implementação do vSAN representa uma revolução no armazenamento. A capacidade de transformar o armazenamento local em um pool de armazenamento compartilhado e distribuído, aumentando a escalabilidade e o desempenho, é fundamental para atender às demandas de crescimento da empresa, evitando inclusive custos com storages tradicionais.
Também me foi solicitado um esboço de da solução proposta, basta clicar na imagem para ampliá-la:
Como podem ver, estou dedicando a placa de rede 10 Gbit/s exclusivamente no uplink em que estão os port groups de vMotion e vSAN, e as placas de rede de 1 Gbit/s para o port group de gerenciamento e maquinas virtuais. Alguns de vocês devem estar pensando porque eu não coloquei os port groups de maquinas virtuais no VMB-VDS2, já que possui uma placa de velocidade muito superior, e o motivo se dá por conta que o Switch TP-LINK de 10 Gb que possuo em meu home, não possui ainda conectividade com minha rede local. Assim que eu adquirir um módulo Gbic SFP+ RJ45 10/100/1000 poderei conectar o switch de fibra com switch ethernet, e então mudarei esse layout e consequentemente o script PowerCLI.
VMware vSAN
Outro ponto a se considerar em relação à escolha de uma rede 10 Gb, se dá por conta de obedecer o pré-requisito da implementação da solução de armazenamento da VMware, o vSAN. Iremos utilizar o vSAN All-Flash, ou seja, todos os dispositivos de armazenamento que irão compor o cluster de vSAN são do tipo SSD.
O dispositivo de armazenamento NVMe ficará alocado na camada de cache, e os 02 dispositivos de armazenamento restantes ficarão alocados na camada de capacidade, criando assim 01 disk group apenas. Quero em breve, em um artigo futuro detalhar a criação desse cluster de VMware vSAN.
Abaixo fiz também um esboço do nosso armazenamento VMware vSAN, cliquem na imagem para ampliá-la:
PowerCLI – A mágica acontece aqui
Bom, dado os esclarecimentos sobre a estrutura que pensei para a VMBeans Cafeteria, e por se tratar de um ambiente novo, eu decidi automatizar todo esse processo, já deu pra perceber o quanto gosto de automatizar as coisas, não é a toa que minha casa é quase toda automatizada.
Como disse anteriormente, não quero detalhar todo o script neste artigo, dessa forma, fiz questão de deixá-lo extremamente comentado dentro dele, seus passos e saídas durante sua execução. Entretanto, se torna necessário uma visão macro do seu pré-requisito, do que ele faz e sua compatibilidade:
Pré-requisitos
– vCenter Server 8U2
– PowerShell 7, pode ser baixada AQUI
– VMware vSphere PowerCLI, pode ser baixada AQUI
– 3 hosts VMware ESXi 8.0.2 com IP, DNS e hostname devidamente configurados
– Entradas DNS para todos os hosts ESXi e vCenter, para isso utilizei um servidor Windows Server 2016, exercendo a função de um Controlador de Domínio e DNS Server da rede.
OBS: Percebam que, com exceção do Windows Server, todos os requisitos utilizei a ultima versão atualmente e embora eu não tenha testado, acredito que o script PowerCLI vá funcionar em versões anteriores.
Antes de falar sobre as ações, percebam que no inicio do script há um bloco de variáveis para ser preenchido, é nele que voce vai inserir todas as informações que o script vai precisar, como por exemplo o nome do vCenter Server e hosts VMware ESXi, nome do Datacenter e Cluster, Endereços IP, etc… Se alguma informação aqui nesse bloco estiver errada em relação ao seu ambiente, o script certamente irá falhar, máximo de atenção nesse ponto.
Vale ressaltar também que alguns itens voce pode alterar, de acordo com sua necessidade, como por exemplo a quantidade de uplinks, port groups, hosts VMwar ESXi, etc…
Ações que o Script executa
– Verifica se os hosts ESXi e vCenter Server estão respondendo ping, caso contrário, o script não dá prosseguimento
– Conecta no vCenter Server via VMware vSphere PowerCLI
– Cria um Data Center
– Cria um Cluster
– Adiciona os hosts VMware ESXi no Cluster
– Cria o primeiro VDS com dois uplinks e um Port Group de Gerenciamento, juntamente com 03 Port Groups de maquinas virtuais
– Cria o segundo VDS com apenas um uplink e um Port Group para vMotion e outro para vSAN
– Adiciona os hosts ao primeiro VDS
– Migra a primeira vmnic dos hosts para o Port Group de Gerenciamento do VSS para o VDS
– Consulta todas as VMs nos hosts e migra cada uma para o Port Group LAN
– Migra a segunda vmnic dos hosts para o Port Group de Gerenciamento do VSS para o VDS
– Migra a terceira vmnic para o Port Group de vMotion e vSAN
– Remove o VSS
– Define o servidor NTP e inicia o serviço
– Habilita HA e DRS no cluster
– Desconecta do vCenter Server
Finalmente, segue abaixo o script PowerCLI:
###################################################################### # Leandro Franklin | Novembro 2023 # www.LeandroFranklin.net # ###################################################################### # Edite as variáveis abaixo de acordo com o seu cenário. # Neste artigo abaixo possui todos os detalhes do cenário em que ele está # inserido, que trata-se de um home lab bare-metal. # ###################################################################### $VMBtitle = "Configuracao Inicial VMware vSphere" ### CONFIGURACAO INICIAL: VARIÁVEIS ### # vCenter Server $vCenter = 'vmb-vce01.vmbeans.local' $vCadmin = 'administrator@vsphere.local' $vCpass = 'VMware1!' # Data Center & Cluster $MyDC = 'VMB-DATACENTER' $MyCluster = 'VMB-CLUSTER' # Network $MyVDS1 = 'VMB-VDS1' $NumUplink1 = '2' $NumPortPG = '8' $MyFirstNic = 'vmnic1' $MySecondNic = 'vmnic2' $MyDefaultVSS = 'vSwitch0' $NumPG = 3 $MyPG = "LAN","DMZ","HML" $MyVLANPG = "0","0","0" $MyPGMGMT = 'PG-MANAGEMENT' $MyVLANMGMT = '0' $MyVDS2 = 'VMB-VDS2' $NumUplink2 = '1' $NumPortPG = '8' $MyThirdNic = 'vmnic0' $MyPGvSAN = 'PG-VSAN' $MyVLANvSAN = '0' $MyPGvMotion = 'PG-VMOTION' $MyVLANvMotion = '0' # Hosts ESXi $MyESXiPass = 'VMware1!' $MyNTP = 'a.ntp.br' $NumHost = 3 $MyHosts = "esxi01.vmbeans.local","esxi02.vmbeans.local","esxi03.vmbeans.local" $MyIPvMotionHosts = "10.10.10.1","10.10.10.2","10.10.10.3" $MyMaskvMotion = '255.255.255.0' $MyIPvSANHosts = "10.10.20.1","10.10.20.2","10.10.20.3" $MyMaskvSAN = '255.255.255.0' ### CONFIGURACAO FINAL: VARIÁVEIS ### ###################################################################### ########################## TESTANDO SERVIDORES ####################### ###################################################################### cls write-host write-host $VMBtitle write-host write-host "www.LeandroFranklin.net" write-host write-host "============================" write-host write-host "Testando conexão com hosts VMware ESXi e vCenter Server" write-host # Testando vCenter Server write-host "Testando Servidores..." If (Test-Connection $vCenter -count 4 -quiet) {write-host "$vCenter OK!" -foregroundcolor "green"} else {write-host "$vCenter FALHOU | Verifique a rede / entradas DNS" -foregroundcolor "red"; $ConnectionError = 1;} # Testando Hosts ESXi $NumHostTotal = 0 while($NumHost -ne $NumHostTotal) { If (Test-Connection $MyHosts[$NumHostTotal] -count 4 -quiet) {write-host $MyHosts[$NumHostTotal]"OK!" -foregroundcolor "green"} else {write-host $MyHosts[$NumHostTotal]"FALHOU | Verifique a rede / entradas DNS" -foregroundcolor "red"; $ConnectionError = 1;} $NumHostTotal++; } If ($ConnectionError -gt 0) { write-host write-host "### FALHOU ###`nVerifique os erros, verifique sua rede / entradas DNS" -foregroundcolor "red"; exit} else { write-host write-host "### SUCESSO ###" -foregroundcolor "green" write-host write-host "============================" write-host write-host "Conectando ao vCenter Server $vCenter..." Start-Sleep -Seconds 8 } ###################################################################### ##################### CONEXÃO COM VCENTER SERVER ##################### ###################################################################### Connect-VIServer $vCenter -u $vCadmin -password $vCpass -Force | Out-Null write-host "Conectado ao $vCenter" -foregroundcolor "green" write-host write-host "Iniciando script..." Start-Sleep -Seconds 4 write-host write-host $VMBtitle write-host write-host "www.LeandroFranklin.net" write-host write-host "============================" write-host ###################################################################### ######################## CRIAÇÃO DO DATA CENTER ###################### ###################################################################### write-host "Criando Data Center..." # Criação do Data Center New-Datacenter -Location (Get-Folder -NoRecursion) -Name $MyDC | Out-Null write-host "Data Center $MyDC criado com sucesso!" -foregroundcolor "green" write-host write-host "============================" write-host ###################################################################### ######################### CRIAÇÃO DO CLUSTER ######################### ###################################################################### write-host "Criando Cluster..." # Create Cluster New-Cluster -Location $MyDC -Name $MyCluster | Out-Null write-host "Cluster $MyCluster criado com sucesso!" -foregroundcolor "green" write-host write-host "============================" write-host write-host "Adicionando Hosts ESXi ao Cluster..." $NumHostTotal = 0 while($NumHost -ne $NumHostTotal) { # Adição ao Cluster Add-VMHost -Name $MyHosts[$NumHostTotal] -Location $MyCluster -User root -Password $MyESXiPass -Force -RunAsync | Out-Null Start-Sleep -Seconds 10 $NumHostTotal++; } write-host "Hosts ESXi adicionado ao vCenter Server com sucesso!" -foregroundcolor "green" write-host write-host "============================" write-host ###################################################################### ############## CRIAÇÃO DO VIRTUAL DISTRIBUTED SWITCH 1 ############## ###################################################################### write-host "Criando VDS1..." # Criando VDS1 New-VDSwitch -Name $MyVDS1 -Location $MyDC -NumUplinkPorts $NumUplink1 -RunAsync | Out-Null Start-Sleep -Seconds 10 write-host "VDS $MyVDS1 criado com sucesso!" -foregroundcolor "green" write-host write-host "============================" write-host write-host "Criando PortGroups..." # Criando PortGroup de Gerenciamento Get-VDSwitch -Name $MyVDS1 | New-VDPortgroup -Name $MyPGMGMT -VlanId $MyVLANMGMT -NumPorts $NumPortPG -RunAsync | Out-Null write-host "PortGroup $MyPGMGMT com VLAN $MyVLANMGMT ($MyVDS1) criado com sucesso!" -foregroundcolor "green" $NumPGTotal = 0 while($NumPG -ne $NumPGTotal) { # Criando PortGroup para Maquinas Virtuais Get-VDSwitch -Name $MyVDS1 | New-VDPortgroup -Name $MyPG[$NumPGTotal] -VlanId $MyVLANPG[$NumPGTotal] -NumPorts $NumPortPG -RunAsync | Out-Null write-host "Port Group" $MyPG[$NumPGTotal] "no" $MyVDS1 "criado com sucesso!" -foregroundcolor "green" $NumPGTotal++; } write-host "Port Groups no $MyVDS1 criado com sucesso!" -foregroundcolor "green" write-host write-host "============================" write-host ###################################################################### ############## CRIAÇÃO DO VIRTUAL DISTRIBUTED SWITCH 2 ############## ###################################################################### write-host "Criando VDS2..." # Criando VDS2 New-VDSwitch -Name $MyVDS2 -Location $MyDC -NumUplinkPorts $NumUplink2 -Mtu 9000 -RunAsync | Out-Null Start-Sleep -Seconds 10 write-host "VDS $MyVDS2 criado com sucesso!" -foregroundcolor "green" write-host write-host "============================" write-host write-host "Criando PortGroups..." # Criando PortGroup para vMotion Get-VDSwitch -Name $MyVDS2 | New-VDPortgroup -Name $MyPGvMotion -VlanId $MyVLANvMotion -NumPorts $NumPortPG -RunAsync | Out-Null write-host "PortGroup $MyPGvMotion com VLAN $MyVLANvMotion ($MyVDS2) criado com sucesso!" -foregroundcolor "green" # Criando PortGroup para vSAN Get-VDSwitch -Name $MyVDS2 | New-VDPortgroup -Name $MyPGvSAN -VlanId $MyVLANvSAN -NumPorts $NumPortPG -RunAsync | Out-Null write-host "PortGroup $MyPGVSAN com VLAN $MyVLANVSAN ($MyVDS2) criado com sucesso!" -foregroundcolor "green" write-host "Port Groups para $MyVDS2 criado com sucesso!" -foregroundcolor "green" write-host write-host "============================" write-host ###################################################################### ############### ESXI HOSTS - ADD para VMB-VDS1 ################## ############### MIGRANDO PRIMEIRA NIC - MANAGEMENT ################### ###################################################################### $NumHostTotal = 0 while($NumHost -ne $NumHostTotal) { write-host "Configurando"$MyHosts[$NumHostTotal]"..." # Adicionando Hosts no VDS VMB-VDS1 Get-VDSwitch -Name $MyVDS1 | Add-VDSwitchVMHost -VMHost $MyHosts[$NumHostTotal] | Out-Null write-host "Adição para VDS $MyVDS1 realizado com sucesso!" -foregroundcolor "green" # Adicionando a primeira NIC à VMB-VDS1- Uplink $MyFirstNicHost = Get-VMHost $MyHosts[$NumHostTotal] | Get-VMHostNetworkAdapter -Physical -Name $MyFirstNic Get-VDSwitch $MyVDS1 | Add-VDSwitchPhysicalNetworkAdapter -VMHostNetworkAdapter $MyFirstNicHost -Confirm:$false | Out-Null write-host "Primeira NIC adicionado à $MyVDS1 com sucesso!" -foregroundcolor "green" # Migrando vMkernel de Gerenciamento (vSS para vDS) $vNicManagement = Get-VMHostNetworkAdapter -VMHost $MyHosts[$NumHostTotal] -Name vmk0 Add-VDSwitchPhysicalNetworkAdapter -DistributedSwitch $MyVDS1 -VMHostPhysicalNic $MyFirstNicHost -VMHostVirtualNic $vNicManagement -VirtualNicPortGroup $MyPGMGMT -Confirm:$false | Out-Null write-host "Migrado $MyFirstNicHost para o Port Group de Gerenciamento (vSS to $MyVDS1) com sucesso!" -foregroundcolor "green" write-host $NumHostTotal++; } write-host write-host "============================" write-host ###################################################################### ######################### MIGRANDO TODAS AS VMS ###################### ###################################################################### # Gerar uma lista de VM e migrar para o Port Group LAN write-host "Migrando todas as VMs para Port Group LAN..." $VMlist = Get-VM foreach($VM in $VMlist){ Get-NetworkAdapter $VM | %{ write-host "Configurando" $_.NetworkName on $VM $_ | Set-NetworkAdapter -PortGroup (Get-VDPortGroup -Name "LAN" -VDSwitch $MyVDS1) -Confirm:$false | Out-Null } } write-host "Migração de todas as VMs para Port Group LAN com sucesso!" -foregroundcolor "green" write-host write-host "============================" write-host ###################################################################### ############### ESXI HOSTS - ADD para VMB-VDS1 ################## ############### MIGRANDO SEGUNDA NIC - MANAGEMENT #################### ###################################################################### write-host "Migrando a segunda NIC para o Port Group de Gerenciamento..." $NumHostTotal = 0 while($NumHost -ne $NumHostTotal) { # Migrando vMkernel de Gerenciamento (vSS para vDS) $MySecondNicHost = Get-VMHost $MyHosts[$NumHostTotal] | Get-VMHostNetworkAdapter -Physical -Name $MySecondNic $vNicManagement = Get-VMHostNetworkAdapter -VMHost $MyHosts[$NumHostTotal] -Name vmk0 Add-VDSwitchPhysicalNetworkAdapter -DistributedSwitch $MyVDS1 -VMHostPhysicalNic $MySecondNicHost -VMHostVirtualNic $vNicManagement -VirtualNicPortGroup $MyPGMGMT -Confirm:$false | Out-Null write-host "Migrado" $MySecondNic "do host" $MyHosts[$NumHostTotal] "para o Port Group de Gerenciamento (vSS to $MyVDS1) com sucesso!" -foregroundcolor "green" $NumHostTotal++; } write-host write-host "============================" write-host ###################################################################### ############### ESXI HOSTS - ADD for VMB-VDS2 ################### ########### MIGRANDO TERCEIRA NIC - vMotion e vSAN ################### ###################################################################### $NumHostTotal = 0 write-host "Migrando a terceira NIC para o Port Group de vMotion e vSAN..." write-host "Configurando serviço de NTP nos hosts..." while($NumHost -ne $NumHostTotal) { # Adicionando Hosts no VDS VMB-VDS2 Get-VDSwitch -Name $MyVDS2 | Add-VDSwitchVMHost -VMHost $MyHosts[$NumHostTotal] | Out-Null write-host "Adição para VDS $MyVDS2 com sucesso!" -foregroundcolor "green" # Criando VMkernel vMotion New-VMHostNetworkAdapter -VMHost $MyHosts[$NumHostTotal] -VirtualSwitch $MyVDS2 -PortGroup $MyPGvMotion -IP $MyIPvMotionHosts[$NumHostTotal] -SubnetMask $MyMaskvMotion -VMotionEnabled $true | Out-Null write-host "VMkernel para vMotion criado com sucesso!" -foregroundcolor "green" # Criando VMkernel vSAN New-VMHostNetworkAdapter -VMHost $MyHosts[$NumHostTotal] -VirtualSwitch $MyVDS2 -PortGroup $MyPGvSAN -IP $MyIPvSANHosts[$NumHostTotal] -SubnetMask $MyMaskvSAN -VsanTrafficEnabled $true | Out-Null write-host "VMkernel para vSAN criado com sucesso!" -foregroundcolor "green" # Adicionando a terceira NIC à VMB-VDS2- Uplink $MyThirdNicHost = Get-VMHost $MyHosts[$NumHostTotal] | Get-VMHostNetworkAdapter -Physical -Name $MyThirdNic Get-VDSwitch $MyVDS2 | Add-VDSwitchPhysicalNetworkAdapter -VMHostNetworkAdapter $MyThirdNicHost -Confirm:$false | Out-Null # Configurando e Iniciando Serviço NTP Get-VMHost $MyHosts[$NumHostTotal] | Add-VMHostNtpServer -NtpServer $MyNTP | Out-Null Get-VmHostService -VMHost $MyHosts[$NumHostTotal] | Where-Object {$_.key -eq "ntpd"} | Start-VMHostService | Out-Null Get-VmHostService -VMHost $MyHosts[$NumHostTotal] | Where-Object {$_.key -eq "ntpd"} | Set-VMHostService -policy "on" | Out-Null write-host "NTP configurado e iniciado com sucesso!" -foregroundcolor "green" write-host $MyHosts[$NumHostTotal]"OK!" -foregroundcolor "green" write-host $NumHostTotal++; } write-host "============================" write-host ###################################################################### ####################### CONFIGURAÇÕES FINAIS ######################### ###################################################################### write-host "Removendo vSS ($MyDefaultVSS)..." # Remoção do vSS Remove-VirtualSwitch -VirtualSwitch $MyDefaultVSS -Confirm:$false write-host "vSS $MyDefaultVSS removido com sucesso!" -foregroundcolor "green" write-host write-host "============================" write-host write-host "Habilitar HA & DRS no Cluster $MyCluster..." # Configuração do Cluster Get-Cluster $MyCluster | Set-Cluster -HAEnabled:$true -DrsEnabled:$true -Confirm:$false | Out-Null write-host "Cluster $MyCluster configurado com sucesso!" -foregroundcolor "green" write-host write-host "============================" write-host write-host "Desconectando do $vCenter..." # Disconnect vCenter Server Disconnect-VIServer -Server $vCenter -Confirm:$false write-host "vCenter Server desconectado com sucesso!" -foregroundcolor "green" write-host write-host "============================" write-host write-host "### FINISH ###" -foregroundcolor "green" write-host "www.LeandroFranklin.net" -foregroundcolor "green" write-host
Segue abaixo um video que gravei da execução do script acima:
Conclusão
Claro que a VMBeans aprovou meu script, e realmente, parece mágica né? Esse é mínimo do poder da automação. Não inseri nesse script o processo de criação do cluster vSAN, pois para esse passo quero detalhar em um outro artigo. Acho que o vSAN merece esse destaque.
Espero que este guia seja útil em sua aprendizagem de automação e administração do ambiente vSphere. Caso tenha dúvidas, não hesite em entrar em contato.