segunda-feira, 26 de janeiro de 2015

Monitorando a utilização de espaço em disco no VCSA

                 

A cada dia tenho visto mais e mais administradores optarem por utilizar o vCenter Server Appliance  (VCSA) ao invés da versão Windows do vCenter Server. Se você tem dúvidas sobre qual das versões é melhor para o seu ambiente, veja esse post que fiz há algum tempo com algumas considerações que talvez ajudem a escolher.

Uma das coisas que eu já percebi é que quando se utiliza o VCSA, há uma certa tendência em abrir mão do gerenciamento da máquina em si, talvez por ter esse conceito de appliance, e já vir pré-configurado, algumas pessoas tendem a ignorar o gerenciamento e o monitoramento do S.O que roda dentro desse appliance. E esse “descaso” pode acabar gerando situações críticas para o ambiente.

Uma dessas situações pode ser o estouro do espaço em disco no appliance. É importante lembrar que o VCSA conta com um banco de dados vPostgres embutido e que com o passar do tempo e dependendo da maneira como foram configuradas as opções de estatísticas, esse banco pode crescer a ponto de ocupar toda a partição do disco, causando problemas ainda piores.

Infelizmente, ainda não há (e nem sei se algum dia terá) um alarme no vCenter informando sobre a utilização do espaço em disco no appliance. Talvez por isso a VMware tenha disponibilizado um script para os seus usuários que permite que um e-mail seja enviado para o administrador quando uma determinada percentagem do disco tiver sido ocupada.

Para maiores detalhes sobre este monitoramento e para o download do script, veja o KB2058187.

terça-feira, 13 de janeiro de 2015

Renomeando máquinas virtuais através do PowerCLI

                 

Existem algumas situações em que um simples script pode nos ajudar a ganhar um bom tempo na execução de tarefas repetitivas. Recentemente passei por uma situação onde seria necessário renomear uma grande quantidade de máquinas virtuais. As VMs deveriam ser renomeadas tanto no inventário do vCenter como no domínio de rede. Imagina só o trabalho de ter que renomear máquina por máquina no vCenter e também no AD!?!

Procurando uma forma mais ágil para executar a atividade, acabei me deparando com alguns scripts PowerCLI, que depois de alguns testes e adaptações, me pouparam um bom tempo.

Abaixo compartilho com vocês...
- Script para renomear as VMs no inventário do vCenter

Connect-VIServer [vcenter-address] –User [vcenter-user] -Password [user-password]
$csv=Import-CSV "C:\temp\script\rename.csv"
Foreach ($vm in $csv){
Get-VM $($vm.oldname) | Set-vm -name $($vm.newname) -confirm:$false | 
}

O script acima é extremamente simples, basicamente será preciso criar um arquivo do tipo .csv contendo duas colunas, uma com o nome atual da VM no inventário do vCenter e outra com o nome desejado.


O script importa este arquivo .csv e linha por linha vai alterando o nome das respectivas VMs. 

Um detalhe importante que deve ser levado em consideração ao renomear VMs no inventário do vCenter é que os arquivos que compõem a máquina virtual, localizados no datastore onde a mesma foi alocada, não são alterados. A única maneira de fazer essa alteração é movimentando a VM para um outro datastore através de uma operação de Storage vMotion. O ideal é fazer essa operação o quanto antes, uma vez que essa diferença na nomenclatura da VM pode dificultar um futuro troubleshooting.

- Script para renomear as VMs Windows no domínio 

Connect-VIServer [vcenter-address] –User [vcenter-user] -Password [user-password]
$vms=Import-CSV "C:\temp\script\listavms.csv"
Foreach ($VM in $vms){
$VMInfo = Get-VMGuest ($vm.Name) | select-Object VmName, Hostname 
$VCName = $VMInfo.VmName
$GuestName = $VMInfo.HostName
If ($GuestName -ne $VCName) {
Write-Host "$VCName is currently $GuestName... renaming"
$renamecomputer = "netdom renamecomputer $GuestName /newname:$VCName /userd:[Domain\username] /passwordd:[domain-user-password] /force"
Invoke-VMScript -VM $VCName -GuestUser "[administrador-local]" -GuestPassword "[administrador-local-password]" -ScriptType Bat -ScriptText $renamecomputer
restart-vmguest -VM $VCName -Confirm:$false
}
}

Esse script é um pouco mais complexo que o anterior. O que ele faz é ler a lista das VMs que devem ter o nome de domínio alterado em um arquivo .csv. 

Em seguida, para cada máquina virtual da lista, o script compara o nome atual no inventário do vCenter com o hostname (nome do guest OS), e se for diferente, renomeia a máquina no domínio com o mesmo nome utilizado no inventário do vCenter. Essa era a necessidade que eu tinha, mas o bom de se trabalhar com script é que podemos adaptar o código para o que a situação exige.