vSphere 5.0 – Image Builder

Egyik előző cikkemben, a vSphere 5.0-ban megjelent Auto Deploy lehetőségeit, és alapvető beállításait  mutattam be, és csak utaltam arra, hogy az Image Builder segítségével a gyakorlatban nagyon hatékonyan hozhatunk létre saját ESX profilokat.

Éppen ezért, folytatásként az Image Builder-ben rejlő hatalmas lehetőségeket fogom részletesen bemutatni.

Igen nagyon fájó pont, hogy az egész Image Builder-t egyelőre kizárólag Windows alól lehet birizgálni, ami eléggé kiábrándító egy Linux alapú appliance megoldás esetén...

Szóval, kerítsünk egy PowerCLI-vel felvértezett windows-t, és csatlakozzunk az vCenter Server-hez:

PowerCLI C:\> Connect-VIServer -server 192.168.201.50

Majd, nézzük meg milyen Profile-ok állnak a rendelkezésünkre:

PowerCLI C:\> Get-EsxImageProfile

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-5.0.0-469512-no-tools     VMware, Inc.    19/08/2011 1... PartnerSupported
ESXi-5.0.0-469512-standard     VMware, Inc.    19/08/2011 1... PartnerSupported

Ha az előző cikkben leírtak alapján jártunk el, akkor a fenti kimenetet kapjuk.

Lássuk, melyik oszlop mit is jelent számunkra:

  • Name

Ez ugye nem kíván túl sok magyarázatot. Fontos azonban, hogy egyedi nevet adjunk a leendő saját profiloknak, és praktikus ha benne van a kiinduló ESX csomag pontos verziója, és a patch level is.

  • Vendor

Cégünk nevét írhatjuk ide, nem árt ha tudják a későbbi felhasználói kiket kell szidni, ha valami nem okés vele kapcsolatban ;)

  • Last Modified

Magáért beszél...

  • Acceptance Level

Ez egy igen fontos paraméter, ugyanis ezzel határozhatjuk meg, hogy kitől származó csomagokat (VIB's) pakolhatunk bele. A lehetséges értékei megbízhatósági sorrendben: VMwareCertified, VMwareAccepted, PartnerSupported, and CommunitySupported

Saját profil létrehozása

A fentiek ismeretében, hozzunk létre egy másolatot az egyik meglévő profile-ból, amit később majd jól testre szabunk az igényeinknek megfelelően:

PowerCLI C:\> New-EsxImageProfile  -CloneProfile ESXi-5.0.0-469512-standard -Name "ESXi-5.0.0-469512-v" -Vendor "Andrews Kft." -Description "Image Profile optimized for virtual ESX servers"

És Íme az eredmény:

PowerCLI C:\> Get-EsxImageProfile

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-5.0.0-469512-no-tools     VMware, Inc.    2011.08.19. ... PartnerSupported
ESXi-5.0.0-469512-standard     VMware, Inc.    2011.08.19. ... PartnerSupported
ESXi-5.0.0-469512-v            Andrews Kft.    2011.08.19. ... PartnerSupported

Innentől, neki is állhatunk "testre szabni". Ezzel azonban csak óvatosan, ugyanis igen könnyen elérhetjük, hogy az adott profile használhatatlan legyen. Éles környezetben használt profile-et SOHA ne piszkáljunk!

De mit is értünk a 'testreszabás' alatt? Egy-egy ilyen profile, különböző csomagok együttese, aminek a végeredménye - jó esetben - egy bootolható ESX image.

Lássuk, milyen csomagokból áll a gyári profile:

Csomagok listázása

PowerCLI C:\> Get-EsxSoftwarePackage

Name                     Version                        Vendor     Release Date
----                     -------                        ------     ------------
net-ixgbe                2.0.84.8.2-10vmw.500.0.0.46... VMware     2011.08.19. 1...
ata-pata-hpt3x2n         0.3.4-3vmw.500.0.0.469512      VMware     2011.08.19. 1...
ehci-ehci-hcd            1.0-3vmw.500.0.0.469512        VMware     2011.08.19. 1...
ata-pata-atiixp          0.4.6-3vmw.500.0.0.469512      VMware     2011.08.19. 1...
scsi-megaraid2           2.00.4-9vmw.500.0.0.469512     VMware     2011.08.19. 1...
scsi-aic79xx             3.1-5vmw.500.0.0.469512        VMware     2011.08.19. 1...
net-r8168                8.013.00-3vmw.500.0.0.469512   VMware     2011.08.19. 1...
ohci-usb-ohci            1.0-3vmw.500.0.0.469512        VMware     2011.08.19. 1...
scsi-qla4xxx             5.01.03.2-3vmw.500.0.0.469512  VMware     2011.08.19. 1...
ata-pata-sil680          0.4.8-3vmw.500.0.0.469512      VMware     2011.08.19. 1...
scsi-megaraid-sas        4.32-1vmw.500.0.0.469512       VMware     2011.08.19. 1...
uhci-usb-uhci            1.0-3vmw.500.0.0.469512        VMware     2011.08.19. 1...
ata-pata-amd             0.3.10-3vmw.500.0.0.469512     VMware     2011.08.19. 1...
net-bnx2                 2.0.15g.v50.11-5vmw.500.0.0... VMware     2011.08.19. 1...

A fenti lista (ami persze nem teljes) az összes rendelkezésre álló depot-ban található, összes csomagot (VIB) tartalmazza! - Számomra érthetetlen okokból egy konkrét profile-ban található csomagokat egyelőre nem lehet kilistázni :o

Összehasonlíani viszont lehet:

PowerCLI C:\> Compare-EsxImageProfile -ReferenceProfile ESXi-5.0.0-469512-standard -ComparisonProfile ESXi-5.0.0-469512-no-tools

Equal               : False
PackagesEqual       : False
RefAcceptanceLevel  : PartnerSupported
CompAcceptanceLevel : PartnerSupported
OnlyInRef           : {VMware_locker_tools-light_5.0.0-0.0.469512}
OnlyInComp          : {}
UpgradeFromRef      : {}
DowngradeFromRef    : {}

Aki a Linux/Unix parancssorhoz szokott szokott - mint én - az kicsit meglepődik a kimenet gagyiságán ;) De persze mit vártam? Az egész PowerCLI egy vicc, néha már-már sírva fakadtam használata közben :O

Ám, ha ezen valahogy túltesszük magunkat, akkor megtalálhatjuk hogy a két profile egyetlen csomagban (VMware_locker_tools-light_5.0.0-0.0.469512) tér el egymástól - ahogy az várható is volt...

Persze, a csomag neve is zanzásítva van, a listában ezt így találjuk meg: 'tools-light' - Ezúton is csókoltatom a kedves fejlesztőket :P

Innentől viszont, már szinte minden egyértelmű, szabjuk hát saját igényeinkhez az újonnan létrehozott profile-unkat!

Csomag (VIB) hozzáadása

Ehhez persze csomag is kell, amiket általában a hardvergyártók bocsájtanak rendelkezésünkre, és tartalmuk ennek megfelelően driver vagy kiegészítő szoftver a saját hardvereikhez. Tehát, amit tőlük kapunk az egy kupac szoftver (depot) amit először hozzá kell adnunk az Image Builderhez, csak úgy mint a VMware által adott alap csomagot:

PowerCLI C:\> Add-EsxSoftwareDepot <csomagnév>.zip

Majd, a benne lévő VIB-ek közül, adjuk hozzá a nekünk szükségeset a profilunkhoz:

PowerCLI C:\> Add-EsxSoftwarePackage –ImageProfile ESXi-5.0.0-469512-v -SoftwarePackage <csomagnév>

Csomag (VIB) eltávolítása

Na, ilyenkor hiányzik igazán az a parancs, amiből megtudhatnánk, hogy mit is tartalmaz a profil tulajdonképp - de ha valahogy kitaláltuk, akkor törölhetünk közűlük ;)

PowerCLI C:\> Remove-EsxSoftwarePackage -ImageProfile ESXi-5.0.0-469512-v -SoftwarePackage <csomagnév>

Ha jól megnézzük, egy adott hardver használata esetén rengeteg számunkra teljesen felesleges csomag törölhető! Így, sokkal kisebb lesz a végső image mérete, aminek következtében kevesebb memóriát pazarol, gyorsabban bootol, és kevesebbszer kell frissíteni - hiszen, biztosan nem lesz minden frissítésnél érintett az a maradék pár csomag, ami az adott hardverhez kell...

Profile exportálása

Az így elkészült, saját igényeinkhez igazított telepítőkészlet többféle formában használható fel

  • Auto Deploy

Vagyis a profilt Auto Deploy profilként használjuk, ehhez persze előbb hozzá kell rendelni az Auto Deploy szerverben - különböző szabályok alapján - az ESX szervereink egy részéhez.  Lásd később...

Figyelem! - A profile ezen formája csak az aktuális PowerCLI session-ben létezik. Tehát, ha kilépünk, többé már nem használhatjuk, hacsak nem exportáljuk .zip formába!

  • .zip

Ha saját profilt készítettünk, és később is szeretnénk még használni, mindenképp exportáljuk .zip formába! Persze, az is lehet cél, hogy ezt a remek új csomagot terjeszthetővé tegyük - például ügyfeleink számára. Ehhez nincs más teendőnk, mint kiexportálni .zip formátumba a következő parancs segítségével:

PowerCLI C:\> Export-EsxImageProfile –ImageProfile ESXi-5.0.0-469512-v –FilePath D:\VMware\depots\Andrews-ESXi-5.0.0-469512-v.zip –ExportToBundle
  • .iso

Hasznos lehet néha, ha telepítőmédiát (CD/DVD) is tudunk készíteni a profilunkból:

PowerCLI C:\> Export-EsxImageProfile –ImageProfile ESXi-5.0.0-469512-v –FilePath D:\VMware\depots\Andrews-ESXi-5.0.0-469512-v.iso –ExportToIso

 

AutoDeploy szabályok

Az elkészült ESX profilakat ezek után, különbözős szabályoka alapján rendelhetjük a megfelelő ESX csoporthoz. A legegyszerűbb szabály, ami minden ESX-re érvényes:

PowerCLI C:\> New-DeployRule -Name "Initial ESXi5" -Item "ESXi-5.0.0-469512-standard" -AllHosts 

Ezt azonban lehet tovább finomítani, hiszen nem biztos, hogy minden ESX-re ugyan azt az image-et szeretnénk bootolni: Ezesetben, az '-AllHosts' paramétert a '-Pattern' -re kell cserélni, és megadni az ESX-ek azonosításához szüksége paramétereket...

Igen ám, de mik is lehetnek ezek a paraméterek?

Ez sajnos egyelőre nincs túldokumentálva, a legbiztosabb, ha direkt olyan rule-t hozunk létre (vagy egyátalán nem hozunk létre) ami nem illeszkedik az érintett ESX-re, és akkor a boot során hibaüzenetet kapunk, ahol az adott hardverre érvényes összes paramétert felsorolja:

 

screenshot-tftp-error-00

Ezek valahol a logokban is meg kellene hogy jelenjenek, ám én sehol sem találtam ezeket...

Hasznos dolog még, hogy vCenter szabályokat is lehet megadni a '-Item' kapcsolóval. Ennek hatására a frissen bootolt gép, automatikusan bekerülhet a megadott vCenter objektumba, amik a következők lehetnek:

  • cluster
  • folder
  • host profile
  • image profile

Ezeket a szabályokat aztán, hozzá is kell adni az aktív szabályokhoz:

PowerCLI C:\> Add-DeployRule -DeployRule "Initial ESXi5"

Mivel egy ESX-re akár több szabály is illeszkedhet, fontos hogy egyféle objektum típus hozzárendelésből csak egy lesz érvényes! - Tehát, ha ugyan azt a host-ot két különböző clusterhez is hozzáadná két rá illeszkedő szabály, csak a magasabb prioritású lesz érvényes, több különböző típusú objektumba helyezés esetén viszont mindegyik érvényesül!

A szabályok prioritását az -At <prioritás> kapcsolóval szabályozhatjuk, ahol a kisebb érték jelenti a magasabb prioritást. - Szintén kezdeti hiányosság, hogy a listázásnál ezt egyáltalán nem mutatja :o

A fenti parancsok teljes dokumentációja természetesen megtalálható a VMware oldalain. Ennek tanulmányozását ajánlom mindekinek.

Összefoglalás

Ezekkel a lehetőségekkel rendkívül rugalmas, és könnyen kezelhető virtuális környezetet hozhatunk létre. Természetesen, ezen megoldások nagy része még igencsak gyerekcipőben jár - még akkor is ha a marketingesek az érintett termékek eladásakor nem így nyilatkoztak - ezt, többek között a hiányos parancsok, a PowerCLI-hez való értelmetlen ragaszkodás, és az appliance szervizeinek debug szintű logolása is bizonyítja

Azonban, mindez agyon ígéretes, érdemes vele foglalkozni! Főleg, nagy számú ESX-et tartalmazó virtuális környezetek esetében :)

vSphere 5.0 – Auto Deploy

Ezzel az új funkcióval már hivatalosan is készíthetünk diskless ESXi szervereket, megkönnyítve ezzel az új ESXi szerverek telepítését, éles üzembe állítását, és frissítését is.

A rendszer a következő ábra szerint épül fel:

Működés

  1. Az ESXi szerverek PXE boot segítségével, először is egy IP címet kell hogy kapjanak egy DHCP szervertől
  2. A DHCP szerver az IP-n kívül átadja azt a szükséges információt is, hogy hol keresse a számára előkészített boot image-et.
  3. A boot során az Auto Deploy szerver eldönti, hogy milyen komponenseket kell az adott szervernek betöltenie, és ezeket a rendelkezésére is bocsátja.
  4. A fentiek alapján, az adott szerver egy egyedi, neki szánt modulokat tartalmazó hypervisor-t kap, ami teljes egészében a memóriába töltődve el is indul, maintenance módban.
  5. A vCenter Server a sikeresen elindult ESXi node-ot felveszi a saját inventory-jába, és az image beállításaitól függően berakja a megfelelő Cluster-be.
  6. Rátölti a neki való host profile-t
  7. A maintenance mód megszüntetésével éles üzembe állítja az újonnan elindított ESXi szervert

Beállítások

A fenti működési vázlatból következik, hogy jó néhány szoftverkomponens szoros együttműködésére van szükség a megoldás kivitelezéséhez:

DHCP

Ahhoz, hogy a szerverek PXE boot során kapjanak IP-t, mindenképp szükség van egy DHCP szerverre, ami az IP-n kívül a szükséges információkat is megadja a leendő ESXi szerverünk számára. A vCenter Server Appliance tartalmaz egy dhcp szerver megoldást, ám nincs megfelelően konfigurálva, és értelem szerűen elindítva sem. Az alapvető működéshez a következőkre lesz szükségünk:

# vim /etc/dhcpd.conf

option domain-name "fexmee.com";

authoritative;

use-host-decl-names on;
one-lease-per-client on;

default-lease-time 14400;
max-lease-time 28800;

allow booting;
allow bootp;
deny duplicates;
ddns-update-style none;

# Defines various dhcp options related to gPXE.

option space gpxe;
option gpxe-encap-opts code 175 = encapsulate gpxe;
option gpxe.priority code 1 = signed integer 8;
option gpxe.keep-san code 8 = unsigned integer 8;
option gpxe.no-pxedhcp code 176 = unsigned integer 8;
option gpxe.bus-id code 177 = string;
option gpxe.bios-drive code 189 = unsigned integer 8;
option gpxe.username code 190 = string;
option gpxe.password code 191 = string;
option gpxe.reverse-username code 192 = string;
option gpxe.reverse-password code 193 = string;
option gpxe.version code 235 = string;

subnet 172.26.2.0 netmask 255.255.255.0 {
    range 172.26.2.1 172.26.2.14;
    next-server 172.26.2.31;

    # Tell gPXE to not try and send a second DHCPDISCOVER to get ProxyDHCP
    # information, which makes the boots faster.
    option gpxe.no-pxedhcp 1;

    filename "/tftpboot/undionly.kpxe.vmw-hardwired";

        server-identifier 172.26.2.254;
        option subnet-mask 255.255.255.0;
        option broadcast-address 172.26.2.255;
        option routers 172.26.2.254;

        option domain-name-servers 172.26.2.254;
        option domain-name "fixmee.com";
        option ntp-servers 172.26.2.254;
}

Hogy mindezt kis is szolgálja valahol, szerkesztenünk kell a /etc/sysconfig/dhcpd állományt is, hogy tartalmazzon valami ilyesmit:

DHCPD_INTERFACE="eth0"

Majd, indítsuk is el:

service dhcpd start

És gondoskodjunk arról is, hogy következő boot során automatikusan elindul a szolgáltatás:

chkconfig dhcpd on

 

TFTP

A szerverünknek az IP cím megszerzése után valahogyan el kell tudni érnie a boot image-t, ehhez egy tftp kiszolgálóra lesz szükségünk, amit a vCenter Server Appliance szintén tartalmaz (a megfelelő boot image-ekkel együtt) csak el kell indítani:

service atftpd start

És gondoskodni arról, hogy ez is automatikusan elinduljon boot során:

chkconfig atftpd on

Sok-sok szívástól ment meg bennünket, ha a tramp állományban kijavítjuk az URL-t IP címekre, vagy gondoskodunk a megfelelően beállított DNS név feloldásról.

#!gpxe
set filename https://172.26.2.31:6502/vmw/rbd/tramp
chain https://172.26.2.31:6502/vmw/rbd/tramp

Auto Deploy

Az Auto Deploy szerver valójában egy webszerver kiegésztve egy szabályfeldolgozó motorral (Rules Engine), ami eldönti, hogy melyik szervernek melyik modulokat adja oda. Ez a komponens egyaránt megtalálható a windows alapú és a vCenter Server Appliance megoldás esetében is, így ezzel túl sok teendőnk nincs, mint elindítani...

Image builder

Ahhoz hogy saját, testre szabott ESXi image-eket készíthessünk - vagy a VMware által szállítottakat használhassuk - szükségünk van valamire ami az Auto Deploy szerverre feltölti ezeket, és megfelelő szabályokat hoz létre. Ez lenne az Image Builder, ami valamilyen számomra érthetetlen okból kizárólag PowerCLI segítségével használható. Nem hiszem, hogy a perl API-val nehezebb lett volna megvalósítani a dolgot... ebből is az látszik inkább, hogy ez valójában még nincs kész :(

Tehát, vegyünk egy windows-os gépet, és telepítsük fel a PowerCLI-t, majd töltsük le a VMware által előre csomagolt depot állományt: "ESXi 5.0 Offline Bundle"

Majd, készítsünk egy ESXi image-et, a következők szerint:

PowerCLI C:\> Connect-VIServer -server 172.26.2.31

Name                           Port  User
----                           ----  ----
172.26.2.31                    443   root

PowerCLI C:\> Add-EsxSoftwareDepot VMware-ESXi-5.0.0-469512-depot.zip

Depot Url
---------
zip:VMware-ESXi-5.0.0-469512-depot.zip?index.xml

PowerCLI C:\> Get-EsxImageProfile

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-5.0.0-469512-no-tools     VMware, Inc.    19/08/2011 1... PartnerSupported
ESXi-5.0.0-469512-standard     VMware, Inc.    19/08/2011 1... PartnerSupported

PowerCLI C:\> New-DeployRule -Name "Initial ESXi5" -Item "ESXi-5.0.0-469512-standard" -AllHosts
. . . 
PowerCLI C:\> Add-DeployRule -DeployRule "Initial ESXi5"

Name        : Initial ESXi5
PatternList :
ItemList    : {ESXi-5.0.0-469512-standard} 

Ezzel, elkészítettünk egy 'gyári' ESXi csomagot, amit minden szerver megkaphat. - Ez természetesen csak teszt céljára való, éles körülmények között kicsit szofisztikáltabb szabályokat és csomagokat érdemes létrehozni: erről szól egy másik cikkem: vSphere 5.0 – Image Builder

Ha mindezzel készen vagyunk, akkor máris boot-olhatunk egy új ESX-et:

vCenter Server

Természetesen, mindehez egy vCenter Server is szükséges. A fenti példákban az appliance megoldást vettem alapul. Windows alapú megoldás esetén, a szükségletek hasonlóak, ám ott magunknak kell összevadászni a hiányzó szoftvereket...

Járulékos előnyök

Ez a megoldás, az appliance egyik hiányosságát automatikusan kiküszöböli, ugyanis Update Manager használatára ezentúl nem lesz szükség. Hiszen, a frissítés tulajdonképpen egy új image-re bootolást jelent....

Így, ha egyéb pluginek/kiegészítő szoftverekre nincs szükségünk, ténylegesen megvalósítható egy windows nélküli virtuális környezet - legalábbis szerver oldalon ;)

Biztonság

Soha nem szabad figyelmen kívül hagyni a biztonsági szempontokat, főleg amikor egy virtuális környezetet építünk, ami akár cégünk TELJES szolgáltatási palettájának biztosít virtuális környezetet.

Egyéb esetekben is erősen javasolt a management hálózatot fizikailag is elszeparálni, és tűzfallal védeni az egyéb hálózatoktól, ez esetben viszont kötelező! Hiszen, ezen megoldás alkalmazása esetén nagyon könnyű a boot folyamatba beavatkozni, és ezzel akár egy gonosz módon preparált hypervisort létrehozni, ami éles környezetben katasztrofális következményekkel járhat!