2017. március 2., csütörtök

Egy kis PowerCLI - HP hostok címkézése az ILO IP címével

Az egész úgy kezdődött, hogy letöltöttem a HP Scripting Tools for Windows Powershell alkalmazást, és elgondolkodtam rajta, hogy mire is tudnám használni. Jelenleg még ismerkedési fázisban vagyok a három modullal, de azért pár hasznos dolgot már elkövettem vele.

Előbb röviden, hogy miről is van szó. Itt elérhető a fent nevezett tool. Három, külön telepíthető modulból áll: HPBIOSCmdlets, HPiLOCmdlets valamint a HPOACmdlets.

Ha feltelepítjük őket, akkor attól kezdve mind a parancssoros Powershell, mind az ISE tartalmazni fogja a *HP* parancsokat. A későbbiekben szeretnék róluk írni egy-két cikket, de most csak annyit, amennyi a tárgyban szükséges művelet elvégzéséhez szükséges.

Előbb egy változóban elmenetem az ILO-hoz szükséges belépési adatokat, majd létrehozok két tömböt.

$AdminMol=Get-Credential
$DotNetHPIloArray=New-Object System.Collections.ArrayList

$DotNetHPIlo_servernameArray=New-Object System.Collections.ArrayList 

Van egy Find-HPiLO parancs, amivel egy vagy több IP tartományban meg lehet keresni az összes iLO eszközt. A visszakapott eredményt én szűrtem, mivel vannak régebbi HP szerverek is a környezetben, de nekem azokra nem volt szükségem.

$DotNetHPIloArray=Find-HPiLO -Range IPRange1,IPrange1,IPrange3|?{$_.SPN -like "*BL460c*"

Az IPRange1 formátuma pl. ilyen: 192.168.1.1-254

Ha megnézzük, hogy mit kaptunk, akkor ilyen az output:


Mint látható, ezekért az adatokért még nem kellett bejelentkezni.

Következő lépésben keresni kellett egy olyan Get-HPiILO kezdetű parancsot, amivel visszakapjuk a host nevet. Elég sok parancs van, de azért a parancs neve alapján könnyen megtalálható a Get-HPiLOServerName cmdlet.

De ha esetleg bizonytalanok vagyunk, akkor a legegyszerűbb az, hogy egy Start-Transcript parancs után (ami ugye file-ba írja a kiadott parancsokat és az eredményüket is) lefuttatjuk az összes Get-HPiLO* parancsot egy adott iLO kártya esetén, és utólag elemezzük, hogy melyik parancs milyen adatokat adott vissza. Persze nem egyesével, hanem pl. Excelben egy per alatt összedobható ehhez egy script.

Ha megnézzük, hogy mit ad vissza a fenti parancs, akkor láthatjuk, hogy benne van az ESXi hostunk neve.


Ezek után a fent definiált másik tömböt már könnyen fel tudjuk tölteni a szükséges adatokkal.

$DotNetHPIlo_servernameArray=$DotNetHPIloArray.IP|Get-HPiLOServerName -Credential $AdminMol -DisableCertificateAuthentication|Select IP,Server_name

Ha pedig ez megvan, akkor már könnyű dolgunk van. Ebben a cikkben már részletesen írtam a tag-ek kezeléséről, így most abba már nem megyek vele. A lényeg, hogy előbb létre kell hozni egy tag kategóriát. Erre is megvan a szükséges parancs:
(New-TagCategory -Name "ILO_IP" -Cardinality Single -EntityType VMHost)

De ha gondoljuk, akkor akár az új HTML5 klienst is használhatjuk erre a célra:

Ha tehát már létezik a kategória, akkor adjuk hozzá a hostokhoz a megfelelő címkét.

$hostok=get-vmhost
foreach ($h in $hostok)
    {
    $hely=$DotNetHPIlo_servernameArray.server_name.IndexOf($h.name)
 
    if ($hely -ne -1)
     {
     $NewTag=New-Tag -Name $DotNetHPIlo_servernameArray[$hely].Ip -Category "ILO_IP"
     New-TagAssignment -Tag $NewTag -Entity $h
     }

    } 

És kész is:)


Látható, hogy van egy másik címke is, de az is hasonló módon került oda, így azt már nem részletezem.



1 megjegyzés: