Als je je lang genoeg verdiept in de geschiedenis van Microsoft, kom je vroeger of later meerdere verhalen tegen van personeel dat meer commandline-features probeerde toe te voegen aan de OS'en. Windows is GUI-gedreven, waar muisklikken getypte opdrachten hebben vervangen. Dat is allemaal prima als je enkele tientallen pc's en een handvol servers beheert, maar het is een ander verhaal als je grote aantallen moet automatiseren.
Van cmd.exe naar PowerShell
Dat heb je vooral met cloudbeheer, of het nu on-prem, publiek of hybride is. Moderne orchestrationtools zorgen voor het automatiseren en stroomlijnen van applicaties en VM's met verschillende beheerfilosofieën en besturingssystemen. Infrastructuur draait tegenwoordig nauwelijks meer om hardware en is allemaal code, terwijl het besturingssysteem het datacentrum zelf is.
Hoe zit het nu nog met de GUI? De grafische interface bestaat om computers begrijpelijk te maken voor gebruikers en is in de basis een tool voor één machine die wordt bediend door een mens. De GUI is minder geschikt voor operaties op cloudschaalgrootte.
Microsofts originele commandline, cmd.exe, was niet klaar voor deze wereld. De tool kon simpele batch-opdrachten uitvoeren en had wat basale scripting-mogelijkheden. Vandaar PowerShell. Dat is gebouwd op .Net en heeft geleerd van de Unix-shell en is in de kern een programmeertaal voor systeembeheer.
Open source en meer dan Windows
De code lijkt op C#-constructies, met lange, in de naam beschrijvende opdrachten. Het lijkt niet op de bondige stijl van Unix; PowerShell-opdrachten bevatten werkwoorden en zelfstandig naamwoorden en het is verrassend begrijpelijk en eenvoudig op te pikken. Als er voor wat je wilt doen geen cmdlet bestaat, kun je er enkele combineren in een script of er zelf eentje schrijven.
PowerShell is inmiddels 11 jaar oud en het is niet alleen een Windows-tool meer, maar geschikt voor veel andere systemen. De tool is open source en heeft een actieve community. De roots van Windows zijn er nog steeds en het is een belangrijk onderdeel van het ecosysteem aan systeembeheertools van Windows.
Scripts bewerken
Graaf dieper in de System Center-GUI's en je ziet dat de opdrachten die je daarin geeft op de achtergrond worden uitgevoerd via PowerShell. Klik op exporteren in deze grafische interface en de scripts die System Center aanmaakt en gebruikt kunnen worden bewerkt en hergebruikt in je eigen infrastructuur.
Dat is een interessante optie, omdat je daarmee de tools hebt om je eigen draaiboek van scripts samen te stellen. Wil je Hyper-V-virtuele machines maken en uitrollen via een library? Push een VM via System Center Virtual Machine Manager en exporteer het PowerShell-script om deze te bewerken voor later gebruik.
Hierna: Schakelen tussen verschillende terminalsessies.
Het is niet moeilijk om PowerShell-cmdlets algemener te maken voor andere inzet: vervang expliciete servernamen met variabelen en voeg code toe om strings aan te spreken om in de variabelen te pluggen. Met zo'n algemene cmdlet zijn PowerShell-scripts van System Center de bouwstenen voor complexere acties, zoals een query uitvoeren op Active Directory om een lijst van draaiende servers te krijgen om die vervolgens te gebruiken om netwerkadressen aan te passen zodat je een applicatie naar een back-up netwerk stuurt terwijl de nieuwe versie wordt uitgerold.
Moderne admin
Het heeft even geduurd om PowerShell breder te kunnen inzetten vanwege de leercurve die wat programmeervaardigheden vereist. Maar als je die stap eenmaal hebt gezet, is het makkelijker om moderne applicatiearchitecturen te beheren vanaf je toetsenbord. Library's met extensies geven je cmdlets voor Microsofts clouddiensten, zoals Azure en Office 365. PowerShell is ook een manier om na te denken over moderne admin, bijvoorbeeld voor JIT-toegangsbeheer, waarmee je rechten alleen escaleert voor de specifieke taken en alleen op het moment dat ze nodig zijn.
Recente Windows 10-versies hebben ondersteuning toegevoegd voor commandline-tools van Linux, aanvankelijk met Ubuntu in het Windows Subsystem for Linux, met de Bash-shell. Er worden steeds meer distributies en alternatieve shells toegevoegd aan WSL, maar de brede inzet van Bash maakt het een aantrekkelijke optie om Unix-tools naar Windows te brengen.
Bash voor Windows
Met Ubuntu's grote aanbod aan software, eenvoudige apt-get installatie en updatefeatures kun je in enkele minuten een kale prompt uitrusten met een grote set tools. Met SSH heb je toegang tot Unix-servers op afstand en Windows-software wordt net als Linux-binary's behandeld: stel een pad in zodat je applicaties rechtstreeks vanaf de commandline kan aanzwengelen.
Bash is een belangrijk onderwerp voor Microsoft om ontwikkelaars aan te spreken die MacOS gebruiken om Unix-tools te kunnen hanteren. Er komt meer aan, met een Bash-achtige commandline in Azure en in de nieuwe beheerapps daarvoor voor iOS en Android. Deze Azure-commandline krijgt ook PowerShell-ondersteuning en de optie om direct tussen opties te schakelen via een uitvouwmenu.
Terminal in Visual Studio Code
Microsofts open source ontwikkeleditor, Visual Studio Code, heeft inmiddels ook een terminal gekregen. Het gebruikt je standaardcomaandline, maar je kunt eenvoudig overstappen op cmd, PowerShell of - mits je WSL draait - naar Bash. De manier waarop we code schrijven en debuggen is aan het veranderen en met een terminal kun je niet alleen Node.js-applicaties testen, maar ook containers, Git en andere moderne ontwikkeltools aansturen.
Een terminal binnen een IDE heeft meer voordelen behalve testen en debuggen. Je kunt ermee verbinden naar andere machines om remote toegang te krijgen tot GUI-loze servers met Linux of Microsofts eigen Windows Server Core. Je kunt er zelfs Nano Server-installaties op afstand mee aftrappen. Het is essentieel om directe toegang te hebben tot je build-engines, uitroltools en bron-repo nu moderne devops-tools uit de Linux-wereld komen. Met WSL in Visual Studio Code wordt wat een complexe aangelegenheid had kunnen zijn een stuk eenvoudiger.
Liefde voor CLI
Je zit niet vast aan één commandline, dus je kunt in de ene PowerShell gebruiken voor systeembeheer van je lokale en cloudservers, terwijl je in de andere Bash hanteert voor apps of werken met GitHub. Het is een flexibele aanpak die optimaal gebruikmaakt van Windows herontdekte liefde voor de commandline.
Dit is een wereld van allerlei verschillende computing-aanpakken die allemaal met elkaar moeten samenwerken en dat ook nog eens op schaal moeten kunnen. Commandline-tools maken beheer en uitrol simpeler. Het zijn krachtige cross-platforms tools om met de cloud te werken en om moderne devops-processen te uit te voeren. Daarom is de CLI weer helemaal terug.
Interessant artikel! Commandline vind ik helemaal top! [Link]
Reageer
Preview