Fala rapaziada !
Hoje nosso post de hoje será sobre um script que me aventurei a fazer com a intenção de evitar a fadiga.
O cenário para utilização deste script é diversificado, podendo ser ajustado para implementações/migrações de ambiente VMware para AHV e operação do dia a dia quando se trata de criação de Networks no Nutanix
Requerimentos para funcionamento do script:
- VMware Powershell 7
- Nutanix cmdlets para AOS 6 (Não testei em alguma versão do AOS 5.x )
Vamos ver a composição do script:
#Carrega os módulos de Nutanix cmdlets
if ([string]::IsNullOrEmpty($(Get-PSSnapin -Name NutanixCmdletsPSSnapin -Registered -ErrorAction SilentlyContinue))) {if (Test-Path "C:\Program Files (x86)\Nutanix Inc\NutanixCmdlets\powershell\import_modules\ImportModules.PS1") {
. "C:\Program Files (x86)\Nutanix Inc\NutanixCmdlets\powershell\import_modules\ImportModules.PS1"
} else {
Write-Error "Could not load NutanixCmdletsPSSnapin"
}
} else {
if ([string]::IsNullOrEmpty($(Get-PSSnapin -Name NutanixCmdletsPSSnapin -ErrorAction SilentlyContinue))) {
Add-PSSnapin NutanixCmdletsPSSnapin
}
}
#Carrega os módulos de VMware powercli
Import-module VMware.PowerCLI
#Declara as variáveis do VMware
$vCenter = "vc-server"
$usernamevmw = "administrator@vsphere.local"
$passwordvmw = "vc-password"
$file = "C:\Users\silwm\Downloads\teste-vlan.csv"
#Conecta ao vcenter
Connect-VIServer -Server $vCenter -User $usernamevmw -Password $passwordvmw -force
#Exporta as informações de portgroup e vlanid
$report= foreach ( $vds in get-vdswitch | Select-Object -ExpandProperty Name ) {
foreach ( $vdsPG in $vds ){
Get-VirtualSwitch -name $vds | Get-VirtualPortGroup | `Select Name,VirtualSwitch, @{N = 'VLANId'; E={$_. Extensiondata.Config.DefaultPortCOnfig.Vlan.VlanId}}
}
}
echo $report | Where-Object {$_.Name -like "*VLAN*"} | Export-Csv C:\Users\silwm\Downloads\teste-vlan.csv
(Get-Content $file) | Foreach-Object {$_ -replace '"', ''}|Out-File $file
#Declara as variáveis do Nutanix
$clusterntx = "PE-clusterIP"
$usernamentx = "PE-admin"
$passwordntx = "PE-password"
Connect-NutanixCluster -Server $clusterntx -UserName $usernamentx -Password $passwordntx -AcceptInvalidSSLCerts -Verbose
$cvs = Import-Csv C:\Users\silwm\Downloads\teste-vlan.csv
foreach ($vlan in $cvs) {
New-NTNXNetwork -Name $vlan.Name -VlanId $vlan.VLANId
}
Get-NTNXNetwork
Os dois blocos iniciais são para a importação dos módulos de cmdlets do VMware e Nutanix. A terceira etapa e mais importante, na minha opinião é a conexão ao vCenter e obtenção das informações de portgroup e vlanid do ambiente VMware, sendo exportado para formato csv e filtrando todo portgroup que contenha a palavra VLAN para filtrar somente os objetos de interesse.. O quarto e último bloco é conectar ao Prism Element e criar os portgroups no cluster Nutanix.
Na minha implementação há somente um VDS e o destino será um Open-vSwitch, mas há espaço para customização e seleção de múltiplos VDS para Open-vSwitch.
Espero que isso possa ajudar os amigos no dia a dia!!
Forte Abraço
O melhor que nós temos, definitivamente.