2017. november 8., szerda

vSphere 6.5 Host Resources Deep Dive Ingyen!!


A szerzők, a Rubrik és a VMUG támogatásával ingyenesen letölthető a névben szereplő könyv. Pont a napokban írtam róla, hogy érdemes beszerezni.

A könyv letölthető innen: http://pages.rubrik.com/host-resources-deep-dive_request.html?utm_campaign=Authors


2017. november 3., péntek

Könyvajánló - VMware vSphere 6.5 Host Resources Deep Dive

Ilyen még úgysem volt :)

A nyár közepén jelent meg Frank Denneman és Niels Hagoort szerzőpáros fenti könyve, amit már a kiadást megelőző hónapokban is figyelemmel kísértem, mivel már régen szerettem volna egy olyan könyvet beszerezni, ami megfelelő mélységgel, de mégis érthetően tárgyalja a mai modern x86 alapú szerverek működését.
Ezen ismeretek beszerzésére a mostani, egyre nagyobb és nagyobb kapacitású szerverek esetében fokozottan szükség van, hiszen egy-egy szerveren ma már akár 50-60, de még több virtuális gépet is futtathatunk (a szerverekben lévő nyers erőforrások lehetővé teszik), így minden apró részlet komoly hatással lehet a performanciára.
Így amikor megjelent, az elsők közt rendeltem meg. Mivel szeretem a papír alapú könyveket, így egyáltalán nem volt gond, hogy az első hónapokban csak ilyen formátumban volt elérhető.



Mint a képen is láthatjátok, négy téma köré szerveződnek a fejezetek, mint ahogy a VMware üzemeltetés során is ezen erőforrások mentén kezeljük a környezetünket.
Azok számára is hasznos lehet, akik nem VMware-t üzemeltetnek, de 100%-ban mi tudjuk igazán kihasználni az innen felszedett tudást.

A VSAN-t tárgyaló fejezet kivételével mindent elolvastam, és ha majd az időm engedi, akkor következik a második olvasás, amikor is már olyan szempontból is nézem majd, hogy az én környezetemben milyen módosításokat érdemes végrehajtani ahhoz, hogy még jobb legyen minden.

Csak egy példa. A Host Power Management témában leírtakat alkalmazva egy teszt hoston kb. 20%-kal nagyobb CPU teljesítményt sikerült elérni (benchmark programmal mérve).

Az aktuális dolgokon kívül néhány, a következő években mindennapossá váló technológiáról is esik szó (pl. 3D Xpoint)

Akit érdekel, az Amazon oldalán megtalálja.

PowerCLI upgrade

Mióta a PowerCLI fejlesztői áttértek a modul alapú terjesztésre, azóta már két frissítés is kijött. És pontosan ez az egyik legnagyobb előnye a rendszernek. Nem kell várni, amíg összejön egy olyan "csomag", amiért már érdemes új telepítő készletet készíteni, hanem ha az egyik modulban történik valami komolyabb javítás/új parancs létrehozás, akkor egyszerűn ráhúzhatjuk az új verziót a gépünkre.
Ha nem akarjuk nézegetni, hogy mikor jön ki módosítás, akkor akár egy scriptet is írhatunk, ami mondjuk hetente egyszer leellenőrzi a powershellgallery oldalon, hogy van-e valami változás, és ha igen, akkor telepíti is azt.

Ahhoz hogy tűzfal mögül is rendben is működjön az update, előbb a következő pár sor futtatásával ezt lehetővé kell tenni a PowerShell-ben is.

$webclient=New-Object System.Net.WebClient
$creds=Get-Credential

$webclient.Proxy.Credentials=$creds

Feltétel még, hogy a PowerShell-t, vagy az ISE fejlesztői környezetet admin módban indítsuk el.

Természetesen szemre is meg lehet állapítani, hogy van-e változás a telepítetthez képest, de egy pár soros scripttel biztosíthatjuk, hogy nem néztünk el valamit.

$installed=get-installedmodule VMware*|select name,version|Sort-Object name
$newest=find-module vmware*|select name,version|Sort-Object name

foreach ($module in $newest)
{
if ($module.name -notin $installed.name)
    {
    $module.name +"***New module***"
    }
else
    {
    $existing=$installed|?{$_.name -eq $module.name}
    if ($existing.version -ne $module.version)
        {
        $module.name +"***Updated Module***" + $module.version
        }
    }


A fenti pár sor összehasonlítja a telepített és a Powershell Gallery-ben megtalálható modulokat, és kilistázza ha újat vagy módosítottat talál. (Szokás szerint nem a kód szépségére törekedtem :) )

Az eredmény:

VMware.PowerCLI***Updated Module***6.5.3.6870460
VMware.VimAutomation.Cis.Core***Updated Module***6.5.3.6870462
VMware.VimAutomation.Core***Updated Module***6.5.2.6234650
VMware.VimAutomation.Nsxt***New module***

Látható, hogy egy új (Nsxt) és három frissített modul van az eredeti telepítéshez képest (mivel ezen a gépen még nem frissítettem a kezdeti állapotot)

Hasonlóan a telepítéshez, itt is elegendő a VMware.PowerCLI modult frissíteni, mert az alapján tudja, hogy mely más modul módosult, és a telepítést az alapján elvégzi.

Update-Module VMware.PowerCLI 

Ha ezek után újra lefuttatjuk a fenti scriptet, akkor nem meglepő módon nem lesz eredmény, hiszen minden új és változott modul telepítésre került.

Ha megnézzük, hogy mink is van pontosan, akkor a

get-installedmodule VMware*|select name,version

parancs megadja a listát:

Name                                Version      
----                                -------      
VMware.DeployAutomation             6.5.1.5299608
VMware.ImageBuilder                 6.5.1.5299608
VMware.PowerCLI                     6.5.3.6870460
VMware.VimAutomation.Cis.Core       6.5.3.6870462
VMware.VimAutomation.Cloud          6.5.1.5375799
VMware.VimAutomation.Common         6.5.1.5335010
VMware.VimAutomation.Core           6.5.2.6234650
VMware.VimAutomation.HA             6.0.0.5314477
VMware.VimAutomation.HorizonView    7.1.0.5307191
VMware.VimAutomation.License        6.5.1.5375648
VMware.VimAutomation.Nsxt           2.0.0.6870461
VMware.VimAutomation.PCloud         6.5.1.5376282
VMware.VimAutomation.Sdk            1.0.0.5334677
VMware.VimAutomation.Srm            6.5.1.5374694
VMware.VimAutomation.Storage        6.5.1.5374001
VMware.VimAutomation.StorageUtility 1.0          
VMware.VimAutomation.Vds            6.5.1.5374428
VMware.VimAutomation.vROps          6.5.1.5375723
VMware.VumAutomation                6.5.1.5301639


A lényeg tehát az, hogy akár a legkisebb módosítások esetében is pillanatok alatt frissíthetjük a PowerCLI környezetünket.

Az egyes verziók változását itt is követhetjük: VMware PowerCLI Change Log



2017. szeptember 28., csütörtök

VMworld 2007 session videók

A VMware már az előző évben is viszonylag hamar elérhetővé tette az előadások videóit mindenki számára, és ez most sincs másképp. Pár éve még ezért fizetni kellet egy éves díjat, hogy a legutolsó év előadásait meg lehessen nézni azoknak is, akik nem tudtak elmenni.

Hogy még egyszerűbb legyen a dolgunk, William Lam létrehozott egy oldalt, ahol direkt linkek segítségével érhetjük az előadásokat. Biztosan mindenki ismeri a virtuallyGhetto nevű oldalát, ahol az erről szól bejegyzését is megtalálhatjátok.

Ha esetleg az európai előadások közt találtok olyat, amihez nem tartozik videó, akkor érdemes megnézni az amerikai szekciót is, és fordítva.

Jó videózást!




2017. augusztus 31., csütörtök

VMUG előadás anyaga (30 perc PowerCLI)

Már jó régen volt, de talán még most sem késő megosztani az előadás anyagát. Aki ott volt, az biztosan emlékszik, hogy nem volt teljesen zökkenőmentes a dolog, mivel csak kézi mikrofon volt, így egy kézzel kellett volna demózni, ami ebben a témában elég nehéz dolog, még ha a kódok nagyrészt előre el is voltak készítve.

Remélem azért arra jó volt, hogy ha eddig valaki még nem használta, esetleg kedvet kapott hozzá, aki meg meg aktív használó, az az új telepítési módról kapott némi infót.

Innen tölthetitek le: 30 perc PowerCLI

De hogy valami plusz infó is legyen... Említettem az előadáson, hogy a közösség vegyesen fogadta a telepítési mód megváltozását. Általában céges környezetben nem feltétlenül lett egyszerűbb, mivel addig letöltöttük az MSI csomagot, és lokálisan telepítettünk. Most meg az lenne a jó, ha a PowerCLI direktben elérné az Internetet, akkor is ha egy proxy-n kell keresztül menni.
Szerencsére ez általában igen egyszerűen elérhető a következő kis kód segítségével:

$webclient=New-Object System.Net.WebClient
$creds=Get-Credential

$webclient.Proxy.Credentials=$creds 

Ezután a PowerCLI úgy fogja elérni az Internetet, mint a böngészőnkből is elérjük.

2017. július 7., péntek

Egy kis PowerCLI - ki készítette a snapshotot?

Első ránézésre ez nem tűnik túl bonyolult kérdésnek. Viszont ha lekérdezünk egy snapshotot, nem lesz benne a készítőjének a neve. Ha a description vagy név mezőbe nem írta bele, akkor bizony utólag ebből megállapítani nem lehet.

$snap=Get-VM molszhbsigma01|Get-Snapshot

$snap|fl

Az eredmény:



Viszont mint általában mindenről, erről is készül bejegyzés az események közé. Csak annyi a dolgunk, hogy valahogy párba állítsuk a snapshotot a hozzá tartozó eseménnyel. Ez már így járhatónak tűnik, de van több probléma. Az egyik az, hogy az események is kipörögnek egy idő után (vCenter beállítás, ha igaz, akkor 30 nap a default). Ha ez már megtörtént, akkor sajnos ez az információ nem kinyerhető. A másik probléma, hogy ha megnézzük az eseményben és a snapshotban szereplő időket, akkor azok nem pontosan egyeznek. Lehet, hogy csak egy-két másodpercről van szó, de akkor is eltérhetnek. Az is gondot okozhat, hogy aznap készülhetett több snapshot egymáshoz közeli időkben, de mondjuk egy kivételével a többit már törölték.

Erre a problémára a lenti script készült. A lényege, hogy sorra veszem a snapshotokat, és mindegyiknél megkeresem az adott virtuális géphez tartozó azon eseményeket, amik aznap keletkeztek, és snapshot készítésről szólnak.
Ha egyáltalán nincs ilyen bejegyzés, akkor már kipörgött az adatbázisból. Ha pontosan egy darab van, akkor szerencsénk van, megtaláltuk a pontos egyezést. Ha viszont több esemény is van, azzal valamit kezdeni kell.
Erre azt találtam ki, hogy összehasonlítom az eseményekben szereplő időt a snapshotban található idővel, és azt az eseményt választom ki, ami a legközelebb van hozzá. Ennek már szinte 100%-os pontosságúnak kell lennie.

$Snapshotok=Get-VM|Get-Snapshot

$osszes=@()

foreach ($snap in $snapshotok)
{
$egysor=""|select-object vm,sh_name,sh_created,sh_createdby
$tol=$snap.Created.toshortdatestring()
$ig=$snap.Created.AddDays(1).toshortdatestring()
$egysor.vm=$snap.vm.Name
$egysor.sh_name=$snap.name
$egysor.sh_created=$snap.Created
$esemeny=Get-VIEvent -Entity $egysor.vm -Start $tol -Finish $ig|?{$_.fullformattedmessage -like '*Create virtual machine snapshot*'}

if ($esemeny.count -eq 0)
{
$egysor.sh_createdby="Már nem elérhető" #nincs meg az események közt
}
elseIf ($esemeny.count -eq 1) #pontosan egy esemény történt aznap
{
$egysor.sh_createdby=$esemeny.UserName
}
else #legalább két esemény volt aznap (adott gépre snapshot készítés)
{
$legjobb_index=0
$event_sanpshot_diff_time=[math]::abs(($snap.Created-$esemeny[0].CreatedTime).Seconds)
    for ($i=1;$i -lt $esemeny.count;$i++)
    {
        $d_time=[math]::abs(($snap.Created-$esemeny[$i].CreatedTime).Seconds)
        if ($d_time -lt $event_sanpshot_diff_time)
        {
        $event_sanpshot_diff_time=$d_time
        $legjobb_index=$i
        }
    }
$egysor.sh_createdby=$esemeny[$legjobb_index].UserName
}
$osszes +=$egysor


Ha a futtatás végén kiírjuk az $osszes változó tartalmát, akkor pont azt kapjuk, amit szerettünk volna.



Abban az esetben ha már nincs meg az esemény, a "Már nem elérhető" szöveg jelenik meg.

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.