Del 1 – Automatisera bygget av dina referensimages

Att bygga sin referensimage som man sedan rullar ut med sin OS deployment lösning är en återkommande uppgift för varje IT-avdelning. Microsoft släpper som bekant uppdateringar varje månad, varpå imagen helst bör byggas om varje månad så att den alltid är fullt uppdaterad. Det är naturligtvis fullt möjligt att släpa efter lite, och installera de uppdateringar som saknas vid själva installationstillfället av imagen istället. Men finns det någon anledning till att ha det så? Finns det något bra skäl till att inte uppdatera sin image varje månad?

De flesta gör nämligen inte det. Det sker istället ad-hoc när man har tid, eller i bästa fall har man en rutin där man gör detta en eller några gånger om året. Och man gör det manuellt. Eller rättare sagt, väldigt många har lyckats automatisera själva byggprocessen, men man startar igång den manuellt.

I den här guiden ska vi titta på hur vi väldigt snabbt och enkelt kan automatisera ett schema som spottar ur sig en rykande färsk image varje månad direkt efter Patch Tuesday.

Det här går naturligtvis att göra på många olika sätt och med många olika verktyg. Men vi börjar från början och gör det så enkelt som möjligt. Så i den här första delen kommer vi använda följande tekniker och verktyg:

  • MDT
  • Hyper-V
  • Powershell
  • Scheduled tasks

Förbered byggmiljön

För att bygga vår referensimage använder vi oss av MDT. Vi skapar alltså en task sequence som installerar Windows på en virtuell maskin, installerar alla uppdateringar och eventuella programvaror, gör eventuella anpassningar, och sparar sedan hela installationen i en imagefil någonstans på nätverket. I den här guiden kommer vi inte gå igenom exakt hur man gör allt detta. Vi utgår istället för att du redan har en sådan här task sequence på plats, och kommer istället fokusera på hur vi kör denna task sequence automatiserat och schemalagt.

Om du inte redan har ett deployment share färdigt i MDT för detta ändamål så är en bra plats att börja på här: https://technet.microsoft.com/en-us/library/dn744290.aspx

Det viktiga är att task sequencen och deployment sharet kör hela processen helt automatiskt, dvs utan att det krävs något manuellt meck, såsom frågor i Lite touch wizarden, eller pauser i task sequencen eller liknande. Har du några manuella anpassningar du gör i din image idag så är det första du måste göra att bygga script som fixar detta. Men normalt sett är det rekommenderat att försöka hålla imagen så ren och enkel som möjligt, och det ska vara enkelt att bygga den automatiskt.

Din CustomSettings.ini bör se ut ungefär så här:

Dessa inställningar resulterar i en helt automatisk installation som avslutas med att referensdatorn stängs ned.

Namnet på imagen kommer innehålla datumet då task sequencen kördes, vilket gör att vi får en enkel versionshantering.

Förbered den virtuella referensmaskinen

Vi använder oss här av Hyper-V som vi kan hantera helt och hållet via Powershell, och därför är underbart enkelt att automatisera. Hyper-V är gratis så du kan köra allt det här på din egen arbetsstation (om du har Windows 8 eller nyare), på någon överbliven dator, eller varför inte köpa in en liten NUC för ett par tusenlappar som får stå som dedikerad byggmaskin?

Så i Hyper-V, gör följande:

  1. Skapa en virtuell maskin. Ge den gärna 2 vCPU och 4 GB RAM (och helst inte mindre än 1 GB) om du har hårdvara som räcker. Skapa och lägg till en virtuell hårddisk med standardinställningarna, dvs en dynamisk expanderbar disk som är helt tom.
  2. När maskinen är skapad och medan den fortfarande är nedstängd, och hårddisken är helt tom, ta en snapshot som du kallar t.ex. ”Blank HD”. Den här snapshoten kommer vi använda för att återställa maskinen från början varje gång vi bygger en ny image.
  3. Om deployment sharet ligger på en annan dator än den dator som kör Hyper-V, så behöver du fixa så att du kan mounta ISO-filen över nätverket:
    1. Ge Hyper-V datorns datorkonto i domänen fulla behörigheter på Boot-katalogen i deploymentsharet.
    2. På Hyper-V datorns datorkonto i domänen, lägg till MDT-serverns datorkonto under fliken Delegation och välj tjänsten cifs.

Så kort och gott bör du nu ha en virtuell maskin, som heter t.ex. ImageFactory eller något liknande, men en snapshot och som ska kunna mounta boot-imagen från ditt deploymentshare. Testa manuellt att allt fungerar, att du kan boota maskinen från ISO-filen och att du kan backa tillbaka snapshoten.

Hantera den virtuella maskinen med Powershell

Spara scriptet nedan som Build-ReferenceImage.ps1 och lagra det i någon lämplig katalog på MDT-servern.

Vad scriptet gör är helt enkelt att återställa snapshoten på den virtuella maskinen, mounta en ISO-fil vilket i det här fallet ska vara boot-imagen från MDT, och sen startar igång den virtuella maskinen. Vidare raderar den alla sparade image-filer, baserat på hur många dagar tillbaka i tiden man vill ha historik, så att vi slipper ha image-filer som fyller upp disken i all oändlighet. Vill vi alltså bara ha de senaste två månadernas image-filer så raderar vi allting som är äldre än 62 dagar.

Allting styrs med parametrar till scriptet, såsom namn på virtuella maskinen, namn på snapshot, namn på Hyper-V datorn, sökvägar osv.

Exempel:

Testa att kör scriptet manuellt från MDT-servern och ange parametrar som stämmer överens med din miljö. Verifiera att den virtuella maskinen verkligen återställer sin snapshot, mountar ISO-filen och startar upp och bootar från ISOn ordentligt.

Schemalägg scriptet

När vi nu har alla byggstenar på plats så behöver vi bara schemalägga scriptet med en helt vanlig scheduled task, så att det körs en gång i månaden, direkt efter Patch Tuesday. Börja med att skapa ett lämpligt servicekonto som har behörighet att köra denna scheduled task på MDT servern, samt behörighet att på Hyper-V datorn att starta igång den virtuella maskinen. Kopiera sedan texten nedan och spara den som BuildReferenceImage.xml på MDT-servern.

Denna XML-fil innehåller hela den schemalagda aktiviteten. Ändra alla script-parametrar efter <Arguments> så att de passar i din miljö och kör sedan följande kommando för att skapa den schemalagda aktiviteten:

Ändra kontot och lösenordet och eventuellt namnet på den scheduled task som kommer att skapas.

Voilá det var det hela. Klockan 03:00 den andra onsdagen varje månad kommer nu automatiskt en ny referensimage att skapas och ligga och vänta på dig när du kommer in till jobbet på morgonen.

Slutsats

Som vi ser kan man med otroligt enkla medel göra så mycket som underlättar vår stressade IT-vardag. I det här exemplet har vi med bara tre ynka rader Powershell (ok 5 rader inklusive logiken för att ta bort gamla filer) samt en gammal hederlig scheduled task, automatiserat en uppgift som de flesta IT-avdelningar regelbundet utför, men som de flesta gör manuellt.

Vad är nästa steg, kan man utveckla det här och göra det ännu bättre? Självklart, och det är det som är så roligt med automatisering. Det är bara fantasin som sätter gränserna. Varför inte skicka ett mail till dig när bygget är klart som berättar om allting gick bra? Varför inte automatiskt lägga in den nya imagen i en task sequence i MDT och/eller SCCM? Kanske testa att deploya imagen med denna task sequence på en virtuell testmaskin, och sen skicka ett till mail och berätta om testet gick bra? Och så vidare och så vidare…

I nästa del ska vi titta på hur man gör detta med Service Management Automation istället.

 

Facebooktwitterredditpinterestlinkedinmail

Lämna ett svar

Your email address will not be published.

Fyll i svar på den enkla captcha-frågan nedan för att få kommentera * Time limit is exhausted. Please reload CAPTCHA.