A blogban leírtak a szerzők saját véleménye, és nem a munkáltatójuké.

Laborgépek automatizált újratelepítése MDT 2010-zel

Az őszi tanévkezdés előtt esedékes mindig a tanszéki laborgépek újratelepítése. Most a fő motivációt az adta, hogy az eddigi 32 bites kliens Windowsok nem látták a gépekben lévő 4 GB memória egészét, így mindenképpen egy teljes cserét kellett elvégezni. Az eddig fent lévő Windows XP egyébként is kicsit elöregedett már, a kérdés csak az volt, hogy mire váltsunk. A Windows 7 ugyan megjelent már, MSDNAA-ban az egyéni felhasználóknak már el is érhető, azonban az intézményi Tisztaszoftverbe még nem került be (és az eddigi tapasztalatok alapján még egy jó félévig nem is fog, még a Vista SP2 telepítőig se jutottak el:). Így marad a Vista vagy a Linuxra átállás. Végül abban egyeztünk meg, hogy az egyik laborban Linux lesz (ez is természetesen központosított menedzsmenttel, testreszabva, hálózati boottal, stb. – erről majd talán egyszer később), a másikban pedig Vista az eddigi Active Directory tartománnyal. Így az adminisztrációs igény kétszer annyi, de később az oktatásban jól jön majd, hogy mindkét világ üzemeltetéséből lesz első kézből tapasztalatunk, és tényleg be tudunk mutatni egy heterogén rendszert.

Az első kérdés így eldőlt, 64 bites Vista kerül fel a gépekre. A második kérdés se volt egy egyszerűbb: hogyan menjen a telepítés. Eddig a referencia gép elkészítése teljesen kézzel + sysprep + ghost-os lemezkép készítése majd szétosztása módszer ment. Viszont ha már nekikezdtünk az átállásnak, akkor jó lenne az aktuálisan javasolt microsoftos klienstelepítési módszert is megismerni, nevezetesen a Microsoft Deployment Toolkitet és az összes hozzá kapcsolódó technológiát. Ez első körben a következőkből áll:

  • Windows Automated Installation Kit (AIK): alapvető, alacsony szintű eszközök az automatizált szoftvertelepítéshez. A főbb eszközök a Windows Imaging Format (WIM), egy fájl alapú lemezkép formátum, ami több partíció képét képes tárolni egy fájlban, úgy, hogy az azonos fájlokat csak egyszer tárolja el (single image storage). Az ilyen lemezképek készítésére, módosítására és visszaírására való az ImageX program, a benne tárolt Windows példányt pedig a Windows 7-es AIK-ban bevezetett Deployment Image Servicing and Management (DISM) eszközzel lehet testreszabni (csomagok telepítése, frissítés, beállítások változtatása, stb.). A telepítendő gépek előkészítésére való a  Windows PE, ami egy lecsupaszított Windows, a legújabb AIK-ban lévő Windows PE 3.0 a Windows 7-es kerneljén alapszik. A Windows System Image Manager (Windows SIM) segítségével lehet úgynevezett válasz fájlokat (answer file, unattend.xml) létrehozni, amik a telepítés során automatikusan megadnak egy csomó beállítást. Végül, mielőtt le szeretnénk klónozni egy windowsos gépet, ki kell irtani belőle a gépspecifikus beállításokat (pl. gép SID-je), erre való a Sysprep eszköz. Ezek segítségével már össze lehet állítani egy teljes folyamatot, lásd pl. itt: Windows Vista Deployment Step-by-Step Guide.
  • Windows Deployment Services (WDS): a Windows Server egy szerepe, amelynek a segítségével WIM lemezképeket lehet telepíteni sok kliensgépre. Az AIK szolgáltatását kiegészíti hálózati bootolással, meghajtókat lehet felrakatni telepítés közben, és képes multicast másolásra is.
  • Microsoft Deployment Toolkit (MDT): a telepítési folyamatot összefogó Solution Accelerator: egy közös GUI felület, leírások és sok-sok előre elkészített script. Az új verzió, ami a Windows 7-hez is jó már, most van Release Candidate állapotban, a Connectről letölthető. Két fajta módszert támogat. Lite Touch Installation (LTI) esetén lehet, hogy néhány lépést kézzel kell megtenni. Zero Touch Installation (ZTI) esetén a folyamat teljesen automatikus, de ehhez System Center Configuration Manager kell.

Van egy pár rövidítés, és ez még csak a jéghegy csúcsa:) Elég komplex rendszer, hisz rengeteg igényt ki kell szolgálnia: OEM-ek egyedi felhasználók számára készítenek elő testreszabott gépeket, vállalati rendszergazdák egységesített telepítéseket csinálnak, meglévő gépek migrálása és új telepítések, stb. stb. Dokumentáció és segédanyag is van hozzá rendesen, a gond inkább az, hogy győzze az ember megnézni őket. Néhány a teljesség igénye nélkül:

Új gépek esetén a két fő út, amit láttam:

  • Alap operációs rendszert telepítünk, és az MDT-ben a telepítés során hozzáadjuk a frissítéseket, meghajtókat, alkalmazásokat és beállításokat.
  • Feltelepítünk egy referenciagépet, erre felrakunk mindent, amit akarunk, majd készítünk egy saját WIM lemezképet erről, és ezt szórjuk szét a kliensekre.

Az első előnye szerintem, hogy nincs kézi játék a dologban, minden kiegészítő telepítése, minden beállítás látszik a konfig fájlokból. Könnyű egy-egy komponenst lecserélni, megváltoztatni. A másik megoldás előnye, hogy gyorsabb: csak egyszer kell SP2-t, Office-t, stb. telepíteni, a kliensgépeken már csak másolni kell. Továbbá nem minden alkalmazás esetén olyan triviális az automatizált telepítés. Én végül egy harmadik, hibrid megoldást választottam:), kicsit ebből is és abból is. Referencia gép készült, de csak az operációs rendszer frissítése és néhány alap alkalmazás került fel, ami minden gépre kell (Office, VMware, putty, winscp…). A gépspecifikus programok (pl. Levono System Update) és meghajtók MDT-vel kerülnek fel, a beállítások válasz fájlból vagy csoportházirendből jönnek.

Úgyhogy telepítettem egy Windows Server 2008 R2-t, felraktam rá a legfrissebb AIK-ot, MDT 2010 RC-t, bekapcsoltam a WDS szerepet, és nekikezdtem a próbálgatásnak. A telepítést részletesen nem írom le, az a fenti linkeken megtalálható, inkább csak a főbb problémákat sorolom fel, amibe belefutottam. Ezekből se volt kevés, kb. 4-5 nap volt, mire a technológia megismerésével, kipróbálásával, csiszolgatásával eljutottam odáig, hogy most péntekre megy minden gép az új rendszerrel.

Problémák (és megoldásaik)

Hibakeresés

  • Előbb-utóbb ki kell próbálni, hogy mit alkottunk az MDT-ben a rengeteg beállítással és telepítendő komponenssel. Erre jobb módszert nem találtam, mint hogy egy virtuális géppel végigjátszatom a telepítést. Ez ugye viszont hosszú folyamat, környezettől függően fél-egy óra. Általában a végén szokott kiderülni, hogy valamit elírtunk egy konfig fájlban:-)
  • A Windows telepítő hibaüzenetei nagyon félrevezetőek! Legtöbbször arra panaszkodik, hogy nem találja a WIM fájlt, közben teljesen más a gondja alsóbb szinteken. Ez különösen aljas volt az alábbi szituációban, itt a kiírás során levágta a fájlnév végét, és azt hittem, hogy a túl hosszú név a gondja (közben természetesen nem ez volt).

mdt-path-too-long

  • A pontos hibaüzenetek a gépen lévő log fájlokban vannak. Ezek kicsit szét vannak szórva, tipikus helyek: X:\MININT, C:\MININT\SMSOSD\OSDLOGS, C:\Windows\Temp, C:\Windows\SMSOSD, C:\Windows\sysprep\panther (lásd pl. itt: Deployment logs). A leggyorsabban a setuperr.log-ból lehet kideríteni, ha a telepítés során volt hiba.
  • A log fájlok magukban elég olvashatatlanok, érdemes letölteni az SMS2003 Toolkit2-ben lévő SMS Trace programot.
  • Ezen kívül az MDT-ben kapcsoljuk be, hogy futás közben vagy után másolja már fel a log fájlokat a szerverre. Ha hiba van, nyomjunk a kliensen OK-ot, egész addig, amíg be nem jön a Windows PE command prompt, és ilyenkor már fel is kerültek a részletes logok a szerver megadott megosztásába. Ehhez az MDT Deployment Workbench-ében a CustomSettings.ini-ben kell megadni az SLShare változó. Ha még megadjuk az SLShareDynamicLogging változót is, akkor a fő log fájl, a BDD.log, minden egyes változása futás közben már felkerül, így követhető valós időben távolról, hogy hol tart a telepítő (lásd: MDT 2010 New Feature #1: Logging directly to the network)

vLite

  • Az alap Vista telepítés elég nagy, és nem lehet kiszedni belőle a telepítés előtt komponenseket hivatalosan (Windows 7-ben a DISM már el tud távolítani néhányat, de közel se mindent). Erre a vLite nagyon jó volt, korábban többször használtam már. Most azonban nem igazán megy már.
  • A vLite fejlesztését abbahagyták. AIK 2.0-val sikerült végül elindítanom, de futás közben elszállt. A fő gond viszont az, hogy nem lehet Vista SP2-t telepíteni vLite-tal kezelt gépre.
  • Végül nem használtam vLite-ot, ennek az lett az eredménye, hogy 10 GB helyet használt alapból a rendszer.

Vista SP2

  • A Campusba nem sikerült még felrakni egy Vista SP2-es telepítőt.
  • SP2-t nem lehet MDT-vel a telepítés offline fázisában felrakatni, ezt csak online állapotban lehet (értsd, amikor az adott WIM image már fut egy gépen).
  • Nem lehet SP2-vel összefűzött telepítőt könnyen készíteni, lásd pl. Slipstream Vista SP2? Csak olyan módszert találtam, hogy feltelepítjük a Vistát a gépre, SP1 telepítés (ha még nem volt), SP2 telepítés, majd ImageX segítségével készítünk egy új lemezképet. Ez jó nagy méretű lesz, de legalább megspóroljuk az SP2 telepítésének idejét a klienseken. Részletes leírás pl. itt: Use Reverse Integration to slipstream Windows Vista SP1 and SP2
  • Ne felejtsük el az SP2 telepítés után lefuttatni a compcln programot, ami eltávolítja az elmentett régi fájlokat.
  • A WIM fájlból ISO készíthető:
oscdimg.exe -n -h -m -o -bc:\temp\ISO\boot\etfsboot.com -lVISTASP2 c:\temp\ISO c:\temp\vista_sp2.iso

Arra kell csak figyelni, hogy ha a WIM fájl nagyobb, mint 4 GB, akkor UDF-es ISO-t kell készíteni (-u2 kapcsoló). Ha az egész nagyobb, mint 4,5GB, akkor még egy bootorder.txt-t is kell csinálni, lásd az oscdimg-t a súgóban.

WDS

  • A WDS-ben ha készítünk egy Capture Image-t (egy olyan Windows PE, amiben van egy GUI, ami egy sysprep-elt partícióból WIM-et készít, és felmásolja a WDS szerverre), akkor az a WIM készítése során maximális tömörítést használ (ezt nem találtam leírva sehol, de a tapasztalat ezt mutatta).
  • A Capture Image segítségével készített WIM-et viszont nem lehet egyből használni az MDT-ben, ugyanis a következő hibát kapjuk: “Error Message: Windows cannot access the required file d:\sources\install.wim when replacing install.wim with custom install.wim”. Ez természetesen megint nem a hiba valódi oka, az a logokban van: “SetWindowsImageInfoOnBB:Failed while updating EditionID for volume PID”. A gond az, hogy a WIM metaadataiban nincsen beállítva a FLAGS rész, ami tartalmazza, hogy melyik változatot kell telepíteni. Ezt könnyen bele lehet rakni az ImageX /info paranccsal.
  • Alapértelmezés szerint, ha a WDS gép tartományi tag, akkor ha WDS-ről telepítünk egy WIM-et, akkor a telepítés végén belépteti a klienst a tartományba. Ezt a szerver tulajdonságai között ki lehet kapcsolni. (Ez nem vonatkozik arra az esetre, ha MDT-ből indítjuk a telepítést, mert ott a tartományba léptetést az MDT vezérli.)
  • Az MDT-ben lehet WDS-en lévő WIM-eket importálni úgy, hogy a fájlokat otthagyja a WDS-en, és az MDT könyvtárában csak metaadatokat tárol, azonban ilyenkor nem lehet majd az MDT-ből az unattend.xml-t szerkeszteni. Úgyhogy ezt a módszert nem alkalmaztam.
  • A multicast nálunk nagyon lassú volt (60KB/s 100Mbit/s-es hálón). Néhány tanács, ami multicastnál segíthet: Slow Multicasting speed using Windows Deployment Services. Végül nem találtam meg a probléma okát. Ami gyanús, hogy a WDS-ben a szerver tulajdonságainál a Network / Network Profile szürke, semmilyen sebességet nem lehet kiválasztani.

MDT

  • Az MDT-t két szinten lehet testreszabni.
    • Az egész deployment share szintjén lehet a CustomSettings.ini beállításaival szabályozni (ennek megadása a Deployment Workbench / adott deployment share / Tulajdonságok / Rules fül). Ez a fájl helyileg a deploymentshare\Control könyvtárban van. A megadható beállításokat az MDT súgójában a Microsoft Deployment Toolkit Reference / Properties rész alatt találjuk. Itt a Providing Properties for Skipped Windows Deployment Wizard Pages részt érdemes megnézni még, ez foglalja össze, hogy minimum mit kell megadni ahhoz, hogy az MDT-ben lévő Windows Deployment Wizard ne kérdezzen semmit. A CustomSettings.ini mellett van még egy fájl, a Bootstrap.ini. A CustomSettings.ini-t a kliens a deployment share-hez való csatlakozás után a szerverről szedi le, így a csatlakozás előtti beállításokat nem tudjuk megadni. Erre való a Bootsrap.ini, ami bekerül az LTI Windows PE image-be, és így jut le a klienshez.
    • Létre kell hozni egy Task Sequence-t, amiben megmondjuk, hogy mit csináljon az MDT. Telepítéshez érdemes az alap Standard Client Task Sequence-t használni, mert kellően bonyolult ahhoz az MDT, hogy magunktól egy ilyet nem fogunk tudni összerakni:) Ebben pedig később le lehet tiltani azokat a lépéseket, amik nem kellenek nekünk.
  • A LTI folyamat elején elinduló Windows PE-ben ha be akarjuk állítani a billentyűzetkiosztást, akkor ehhez a keyboardlayoutPE tulajdonságot kell megadni a CustomSettings.ini-ben és a Bootstrap.ini-ben. A trükk csak annyi, hogy nem a szokásos hu-HU értéket kell megadni, hanem a hexa kódját: 040e:0000040e
  • A deployment share tulajdonságainál a PXE boot fülön meg lehetne adni saját hátteret, viszont ezt nekem valamiért kiszedte a WinPE fájlból. Helyette az a trükk, hogy megadunk egy ExtraFiles könyvtárat ugyanott, és abba belerakjuk a képet Windows\system32\winpe.bmp néven.
  • A Standard Client Task Sequence sablon törli a teljes HDD-t, és egy maximális partíciót hoz létre rajta, ezt érdemes felülvizsgálni (Preinstall\New Computer only\Format and Partition disk task). A gépeken volt egy Lenovo Service Partition, amit meg kellett őrizni. Ezért én azt csináltam, hogy ezt a feladatot kitöröltem, helyette hozzáadtam egy Run Command Line-t, és meghívtam a diskpart.exe-t (lásd: How Do I Use MDT 2008 to Partition a hard Drive). Nálam ez így nézett ki (szerintem nem jó a beépített Scripts könyvtárba rakni a saját fájlokat, tisztább egy külön könyvtárat csinálni):
diskpart.exe /s %DEPLOYROOT%\ExtraScripts\itec-diskpart.txt

A diskpart.txt tartalma:

select disk 0
select partition 1
format fs=ntfs label="Preload" quick
exit
  • Volt olyan, hogy meg akartam nézni, hogy egy lépés jól sikerült-e. Ilyenkor jó lett volna megállni, de a LTISuspend.wsf szkriptet csak feltelepült Windowsból lehet hívni. Helyette maradt a Restart Computer lépés, és újraindulás után nem az LTI image-t indítottam, hanem egy saját WinPE-t.
  • Alkalmazások esetén nem egyszerű kitalálni, hogy pontosan milyen kapcsolók kellenek a teljesen automatikus telepítéshez. Ebben segíthet: Unattended/Silent Installation Switches for Windows Apps. Nekem pl. a Lenovo System Update-t kellett telepíteni, ennél ez így néz ki: setup.exe -s -a /s /v” /qn” /L1033. Szerencsére ez benne volt a leírásában🙂 Ráadásul pozitívan csalódtam a Lenovo-ban, van külön adminisztrátoroknak szóló oldal, ahol pl. még csoportházirend fájlok is vannak.
  • Ha készítünk egy saját WIM-et, és azt importáljuk az MDT-be, akkor megkérdezi, hogy mellémásolja-e egy telepítő DVD-ről a teljes Setup-ot is (kb. 300 MB). Erre csak akkor van szükség, ha nincs még olyan WIM a deployment share-en, ami ugyanilyen verziójú és mellette ott van a Setup, egyébként tudja azt használni. Ha mégse talál ilyet, akkor a kliens telepítés közben leáll “ERROR – Unable to find SETUP, needed to install the image …” hibával. No igen, csak a trükk az, hogy pontosan mit is jelent az, hogy ugyanolyan verzió?:) A leírásokban ezt nem találtam meg, végül a megfelelő scripteket kicsit átírva állapítottam meg (az LTIAppyl.wsf tartalmazza, az ApplySetup() metódusban, MDT2010 RC1-ben a 371. sortól kezdve):
    • Platform (X64, X86..), Build (a teljes build number, pl. 6.0.6002.18005 és a Flags metaadat (ebben van az, hogy melyik edition).
    • A másik trükk csak az, hogy ezt nem a WIM fájlokból, hanem a deploymentshare\Control\OperatingSystems.xml-ből olvassa ki.
  • Tartományba lépés: valahogy tárolni kell a tartományba lépéshez szükséges adatokat.
    • Az unattend.xml-ben meg lehet adni az UnattendedJoin résznél, azonban itt a tartományi rendszergazda jelszavát nyílt szövegként tárolja. Ugye ez a fájl fent van a megosztáson végig, plusz lekerül a kliensre, és a végén meg is marad rajta (a helyi admin jelszavát titkosítva tárolja az unattend.xml-ben, sőt, az MDT a végén ki is törli még a titkosított részt is). Ez másnak is fájt: Domain Join Password Encryption and Unattended.xml (a válasz itt nem túl jó, hisz csak a legvégén törli le, mint ahogy azt az utolsó bejegyzésben fel is vetik).
    • Lehet még azt, hogy az MDT Recover from Domain feladatával oldjuk meg, de ilyenkor meg a CustomSettings.ini-ben van benne a jelszó, ami megint nem túl jó.
    • Van Offline domain join, de ez csak Windows 7-tel működik: Offline Domain Join (Djoin.exe) Step-by-Step Guide
    • Végül azt csináltam, hogy a telepítés során nem léptettem be a tartományba a gépeket, hanem utána a netdom join parancsot távolról is végre lehet hajtatni. Így egy PowerShell szkript oldotta meg a feladatot. Nem a legjobb, de mást nem találtam.

Unattend.xml

  • MDT-ben a Task Sequence tulajdonságainál az OS Info fülről lehet szerkeszteni.
  • A súgóban a Settings to Use for an Unattended Installation résznél van megadva, hogy minimum mit kell beállítani ahhoz, hogy a telepítő ne kérdezzen semmit. Ennek nagy részét megadja az MDT alap sablonja is, de azért ellenőrizzük.
  • A telepítés után a Windowsok most már az úgynevezett Welcome Screen-nel indulnak (ez az OOBE, out-of-box-experience). Ez az a rész, ahol felhasználót hozunk létre, időzónát állítunk stb. Ha ezen a részen Ctrl+Shift+F3 billentyűkombinációt nyomunk, akkor a gép újraindul úgynevezett audit módban (lásd a sysprep leírásában). Ilyenkor belép a helyi adminnal, és lehet még telepíteni, testreszabni. De mindig elindul a sysprep indulással, ezzel is jelezve, hogy ha végeztünk, akkor utána álljunk vissza az OOBE módba. A Settings to Use for Automating Windows Welcome rész mondja meg, hogy melyik beállításokat kell megadni az unattend.xml-ben, hogy átlépjük a Welcome Screent automatikusan.
  • Az unattend.xml-ben a Package részen lehet elvileg eltávolítani komponenseket (pl. Sidebar), de nekem ez nem jött össze elsőre, tovább nem próbálkoztam ezzel.

Windows PE

Konfigurációs fájlok

Végül a CustomSettings.ini fájl, amit én használtam. Két lépés nem automatikus: az elején meg kell adni egy tartományi jelszót, amivel csatlakozunk a deployment share-hez, hogy bárki ne indíthassa el a telepítést. Utána pedig ki kell választani a Task Sequence-t, de ezután már csak akkor kell hozzányúlni, amikor bezárjuk a Deployment complete ablakot, és újraindítjuk az alkalmazásokkal ellátott, frissen Windows Update-et futtatott új operációs rendszert:-)

[Settings]
Priority=Default, MACAddress
Properties=MyCustomProperty

[Default]
OSInstall=Y

SkipAppsOnUpgrade=YES
SkipCapture=YES
SkipAdminPassword=YES
SkipProductKey=YES
SkipUserData=YES
SkipDomainMembership=YES
SkipTimeZone=YES
SkipBDDWelcome=YES
SkipApplications=YES
SkipSummary=YES
SkipBitLocker=YES
SkipLocaleSelection=YES
SkipComputerName=YES

KeyboardLocale=hu-HU
KeyboardLocalePE=040e:0000040e
UserLocale=hu-HU

UserID=mdtdeploy
UserDomain=ftslab

SLShare=\\deploy.ftslab.local\DeploymentShare$\Logs
SLShareDynamicLogging=\\deploy.ftslab.local\DeploymentShare$\Logs\%OSDComputerName%

[00:1C:25:BE:A4:19]
OSDComputerName=ITEC1

[00:1C:25:BE:33:B1]
OSDComputerName=ITEC2

A végén látszik, hogy a gépnevet is automatikusan a konfig fájlból veszi, MAC cím alapján (ha sok gépünk van, akkor érdemes ezt a részt adatbázisba kirakni, de nekem egyelőre elfért itt is).

Zárszó

Ebből a bejegyzésből is látszik, hogy azért nem egyszerű technológia és eszköztár ez. Ha rá tudjuk szánni a betanuláshoz szükséges időt, akkor viszont megéri. Így most sikerült elérni, hogy 3 adat megadásával az elején, nagyjából 45 perc alatt újra lehet húzni egy gépet.

2 comments to Laborgépek automatizált újratelepítése MDT 2010-zel

  • Kovács Norbert

    Tetszik a post. Jó kis cucc ez az MDT. Már több helyen is implementáltam vele és az elődjével (BDD) munkaállomás menedzsment folyamatokat, bár többnyire SCCM-be (SMS-be) integráltan. Megvan már az implementáció? Én most hasonló témából írom a diplomamunkámat SCCM+MDT. Windows 7 image kialakítás, terítés, kibővítve szoftverleltárból történő automatizált alkalmazásdisztribúcióval és gépújratelepítés esetén a useradatok migrációjával.

    Üdv,
    Norbi

  • Igen, jó dolgokat tud:) Nálunk most csak SCCM nélkül használtam, viszonylag kis számű gépre kellett, és nem is kellett felhasználói adatokat migrálni. De arra meg rendesen, jó volt látni, hogy hálózatról indítással, egy jelszó megadása után kb. 1 óra múlva már ott volt a szép, új laborgép:-)

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>