2015. november 10., kedd

Egyedi virtuális gép jogok másolása két vCenter szerver közt

A közeljövőben át fogok költöztetni egy teljes 5.5-ös környezetet egy új 6.0-ás vCenter szerverre. Bár az upgrade biztosan kényelmesebb és egyszerűbb lenne, de szerettünk volna Windows verzióban is előre lépni.
Nyílván ez a módszer sok odafigyelést igényel, mivel azt szeretném, hogy a végeredmény pontos mása legyen a régi vCenter szervernek. Azaz a clusterek, DRS szabályok, HA és DRS beállítások, jogok, folderek, stb. pont úgy kerüljenek át, ahogy ezt a felhasználók megszokták. Magyar viszonylatban elég sok gépről és beállításról van szó, így csak a scriptelés a járható út. Kb, 60 fizikai gép, 7 datacenter, 8-900 virtuális gép.

Szerencsére a Neten sok olyan script található, ami ilyen esetben használható. Pl. a host és cluster struktúra, vagy a folder szerkezet másolására kiválóan használható az itt található script: https://ekrejci.wordpress.com/2012/07/26/cloning-datacenters-between-2-vcenters-with-powercli-including-permissions-and-many-more/

Sajnos nálunk elég sok olyan jog van kiosztva, ami direkt géphez van rendelve, így a fenti módszer ezeket nem viszi át. Sőt, mivel a virtuális gépek vagy az egyik vagy a másik vcenter szerveren vannak, így egy lépésben ez nem is megvalósítható. Azaz előbb az eredeti helyen ki kell olvasni az egyedi jogokat, majd miután a gép átkerült az új helyére, be kell állítani.

Jogok kigyűjtése a forrás vCenter szerveren:

$vc1=Connect-VIServer vcenter1  ## forrás
$vc2=Connect-VIServer vcenter2   ##cél

##vcenter1 szerver Cluster1 virtuális gépeinek lekérdezése
$vm_forras=get-vm -Location Cluster1 -Server $vc1 

$ossz_perm=@()

##Az összes olyan permission kigyűjtése, ami közvetlenül a virtuális géphez lett megadva
foreach ($vm in $vm_forras) 
{
$vm_permission=Get-VIPermission -Server $vc1 -Entity $vm|?{$_.entity -eq $vm}
$ossz_perm=$ossz_perm+$vm_permission
}

Miután ez megvan, és a hostok átkerültek a cél vCenter szerverre, hozzá kell rendelni a gépekhez a fentebb kigyűjtött jogokat.

$vm_cel=get-vm -Location Cluster1 -Server $vc2

##végig megyünk az összes gépen
foreach ($vm in $vm_cel)
{
##megnézzük, hogy az adott géphez tartozik-e egyedi jog
$egyvm_perm=$ossz_perm|?{($_.entity).name -eq $vm.name}

    foreach($egyperm in $egyvm_perm)
    {
##ha igen, akkor ezeket egyesével létrehozzuk
    New-VIPermission -Server $vc2 -Entity $vm -Principal $egyperm.principal -Role $egyperm.Role
    }
}

Természetesen ennek előfeltétele, hogy a kérdéses role-ok már létezzenek az új vCenter szerveren is. De azok is könnyedén átvihetők két szerver közt.

Nincsenek megjegyzések:

Megjegyzés küldése