Skrevet af

Kåre Overgård, Infrastructure Specialist

Jeg var så heldig at tilbringe 4 dage med nogle af PowerShell-verdenens skarpeste hoveder - fra Microsoft og IT-branchen generelt - til arrangementet med det mundrette navn: ”PowerShell + DevOps Global Summit 2019”. Det var så godt, at jeg her vil dele det med dig.

Da det ikke er en officiel Microsoft-konference, er der ingen store produktannonceringer eller ”salgs-gas”. Til gengæld præsenteres der ægte PowerShell-erfaringer og udveksles viden om problemstillinger og løsninger. Og Microsoft stiller med et stærkt hold, der gennemgår nogle af fremtidsplanerne. 
For mig, der brænder for automatisering generelt og Powershell specifikt, er det et slaraffenland og et kæmpe privilegium at kunne deltage i.

I reportagen opsummerer jeg nogle af Powershells vigtigste ændringer og trends de sidste par år, samt forventningerne til fremtiden.

Du får også PowerShell-guruen Don Jones' tanker om, hvad I bør fokusere på for at komme fremad mod et velfungerende DevOps-miljø, alt efter hvor I er i dag. En af hans opfordringer, hvis du har et klassisk on-premise miljø med intet eller meget lille forbrug af cloud-tjenester, er: "Behandl servere som kvæg i stedet for som kæledyr, så de ikke kræver så meget manuel konfiguration!"

Sidst i reportagen får du en lille bonus med tips til, hvordan du kommer videre med brugen af PowerShell til automatisering.

12 år med PowerShell

For at forstå forandringerne omkring PowerShell er det nyttigt at kende historien bag de forskellige versioner. PowerShell 1.0 blev frigivet i 2006, og siden da kom der stort set en ny version synkront med hver ny Windows Server-version - hvilket kulminerede med frigivelsen af Windows Server 2016, hvori Windows PowerShell 5.1 var inkluderet.

De nye versioner af Windows PowerShell blev også frigivet til de ældre Windows-versioner under support. Windows PowerShell 5.1 findes derfor til Windows 7 / Windows Server 2008 og nyere, og betragtes af Microsoft som den sidste OS-integrerede version. 5.1 er versionen, der kom med Windows Server 2019.

Microsoft <3 Linux

Årsagen til, at udviklingen af Windows Powershell stoppede, var Microsoft's fundamentale skift imod open source generelt (og Linux specifikt). For at gøre PowerShell mere åben og tilgængelig på flere platforme, skiftede man fra den fulde version af .NET, til den mere begrænsede .NET Core - sidstnævnte er nemlig tilgængelig på diverse Linux-platforme. Det betød dog, at der måtte gives afkald på en del funktionalitet, og specielt mange af modulerne, herunder Active Directory-integrationen, fungerede ikke med .NET Core.

For at synliggøre ændringen, fjernede man ”Windows” fra navnet og tilføjede ”Core”. Efter lang tid i beta frigav man PowerShell Core 6.0 primo 2018 som open source med fuld kildekode på GitHub. Siden da er version 6.1 og 6.2 kommet, sidstnævnte i marts 2019.

Da PowerShell Core 6.0 ikke er en fuld erstatning for den indbyggede Windows PowerShell 5.1, kan Core 6.0 installeres side om side med 5.1, og da programfilen hedder pwsh.exe (Windows PowerShell har altid heddet PowerShell.exe), er det også muligt at adskille scripts, der har brug for en specifik version.

Tendens

Siden frigivelsen af Core, er der sket en kraftig stigning i brugen på Linux-baserede systemer, mens det har stået ret stille på Windows-siden. Microsoft selv vurderer, at de fleste Windows-systemer fortsat bruger 5.1, da den er præinstalleret og - vigtigst - understøtter eksisterende scripts uden opgradering.

PowerShell tilbage til Windows

Microsoft annoncerede for nylig PowerShell 7.0 - uden Core, da Core signalerer nedsat funktionalitet (som Windows Server Core), hvilket ikke er tilfældet. Snarere udvikles der kun på Core-serien, og den har en del sprogrelateret funktionalitet, der ikke findes i Windows PowerShell 5.1.

"Tilbage" til Windows

PowerShell 7.0 anvender en nyere version af .NET Core (3.0), hvorfor det forventes, at ~90% af de indbyggede moduler til PowerShell understøttes direkte. Et andet mål, der arbejdes mod, er at bringe PowerShell 7.0 ”tilbage” til Windows. I første omgang sandsynligvis som en valgbar komponent, der kan tilføjes efter installationen, uden at man skal lave et separat download.

Uden installationsproces 

Som det er tilfældet med de nuværende Core-versioner kommer 7.0 også som en simpel zip-fil, der ikke behøver installation på det system, hvor det skal bruges. Det kan bare pakkes ud, og så kaldes direkte. Det er vigtigt både i udviklingsmiljøer og i container- / DevOps-miljøer, hvor der er meget fokus på at kunne anvende produkter uden at skulle igennem en installationsproces.

Rejsen mod DevOps og automatisering

Som konferencens navn lægger op til, tales der også en del DevOps, hvilket giver god mening, da PowerShell er et værktøj til automatisering, og stærk automatisering er en hjørnesten for vellykket DevOps. Et af de primære formål med DevOps er at skabe et agilt miljø, hvori der hurtigt kan laves ændringer, og hvor manuel administration sænkes til et absolut minimum.

Som en del af keynoten fortalte PowerShell-guruen Don Jones sine tanker om, hvad virksomheder bør fokusere på for at komme fremad mod et velfungerende DevOps-miljø, alt efter hvor de er i dag. Selvom det ikke er PowerShell-specifikt, har jeg inkluderet nogle af hans idéer herunder.

”Klassisk” miljø - on-premise miljø med intet eller meget lille forbrug af cloud-tjenester.

  • Yderligere udvikling af traditionel automatisering (scripts)
  • Brug af DevOps-agtige metoder (fx infrastructure as code)
  • Behandl servere som kvæg i stedet for som kæledyr(!), så de ikke kræver så meget manuel konfiguration (flyt servere til at bruge DHCP, placér servere bag load-balancere osv.)
  • Opdel serverroller så meget som muligt (dvs. flere VMs, der hver især laver mindre)
  • Undgå at implementere nye løsninger, der har behov for klassisk (manuel) konfiguration

”Cloudy” miljøhvor man er på vej ud i skyen med sine interne services.

  • Fokusér på at bruge PaaS så vidt muligt i stedet for IaaS
  • Optimér gentagne opgaver. Brug fx ARM templates til at lave VMs i Azure isf. at bruge web-portalen
  • Undgå at flytte servere 1:1 ud i Azure! Undersøg i stedet muligheden for at flytte til PaaS, eller optimér til at bruge de nye administrationsteknikker isf. at behandle Azure som et almindeligt datacenter
  • Fokusér kraftigt på at implementere DevOps værktøjer (toolchain), også selvom du ikke er klar til at gå fuldt agil
  • Let fokus på administration på tværs af operativsystemer og værktøjer (PowerShell+Python, Windows+Linux ) – det gør transitionen til fuld DevOps nemmere

Agilt miljø

  • Fuld fokus på DevOps værktøjer – lær flere forskellige produkter at kende
  • Lær at tænke ”Lad mig automatisere det”, hver gang du får en ny problemstilling
  • Fokusér på administration på tværs af operativsystemer og værktøjer. Fremtidens miljøer er heterogene!

Bonus: Hvordan kommer DU videre med PowerShell?

Hvordan kommer man så i gang med PowerShell. Nogle henter et script på Internettet og retter det lidt til, eller finder to scripts og får dem smedet sammen med lidt hjælp fra Google. Men ville det ikke være rart at kunne skrive noget helt fra bunden, der løser præcis de opgaver, du har brug for?

Selvstudie eller kursus? 

Der findes efterhånden mange gode begynderbøger om PowerShell, og der er også dukket kurser op. Begge er glimrende måder at komme i gang på, hvis du har modet til at kaste dig ud i et selvstudie eller har tiden til et længere kursus.

Gamification! 

Et lidt sjovere alternativ er PowerShell Koans, der er frigivet for nyligt. Det er et ”spil”, hvor man lærer PowerShell ved at skrive PowerShell - alt sammen pakket ind i et humoristisk slør af karma og meditation. Det er gratis og nemt at komme i gang med, hvis du er i stand til at fyre et par kommandoer af for at få det installeret.

Vil du lære det af mig? 

Man kan også vælge at angribe det fra en anden vinkel, og booke en workshop (eller et længere forløb) med en konsulent som mig, der har automatisering som speciale. Typisk vil man her tage afsæt i en specifik opgave, man gerne vil have løst, og så skriver vi i fællesskab den nødvendige kode. På den måde bliver opgaven løst, samtidig med at man lærer, hvordan det gøres. Det kan skræddersyes præcis til de ønsker og behov, I har som virksomhed, hvilket sjældent er tilfældet på et generisk kursus. Hvis du synes, at det lyder som noget for dig/jer, så kontakt mig gerne.

Tænd kontakten

Vil du vide mere?

Udfyld nedenstående, så kontakter vi dig senest næste arbejdsdag. Du er også altid velkommen på +45 69 89 88 00 eller info@edgemo.com - og i menuen under Kontakt finder du alle edgemo people's kontaktdata.