Azure z PowerShell v Linuxu

PowerShell nebo CLI? To je krásný "souboj". Já mám rád oboje. Koncept práce v Linux CLI je velmi úsporný (nemusím tolik ťukat) a na klasické parsovací nástroje typu grep, sed, cut či awk jsem si docela zvykl. Na druhou stranu PowerShell díky pozdějšímu startu (před deseti lety) mohl udělat řadu věcí lépe. Příkazy jsou sice dlouhé, ale přesně vystihují co se děje a i začátečník je dokáže pochopit jen jejich přečtením (Nová-VirtuálníSíť, Odstraň-SqlDatabázi) a hrátky s "pipováním" mi občas přijde dokáží vytušit, co chci udělat (jako kdybychom mluvili o Ruby vs. Java). Zkrátka - podle toho co dělám beru oboje.

Azure CLI nemá omezení, kde běží - na Linux, Windows i na MacOS. PowerShell byl zatím jen pro Windows, ale to se mění. Microsoft PowerShell jde do open source a běží na Linux - zatím tedy v testovací Alpha verzi, ale evidentně se na tom pracuje. Chtěl jsem se tedy podívat jak to může vypadat. Co je PowerShell pro Linux a jak z něj ovládat Azure?

PowerShell pro Linux

Než začneme - aktuálně je to celé ve verzi Alpha14. To znamená, že spousta věcí ještě nefunguje nebo má limity. Dnes mi nejde o to produkčně ovládat Azure z PowerShell v Linuxu, ale podívat se, jaké to bude, až bude uvolněna ostrá verze. Zkusíte to se mnou?

Jděte na stránky open source PowerShell pro linux na GitHubu: https://github.com/PowerShell/PowerShell

Najdeme si instalační balíček, v mém případě pro Ubuntu 16.04. Stáhneme a nainstalujeme.

$ wget https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.14/powershell_6.0.0-alpha.14-1ubuntu1.16.04.1_amd64.deb
$ sudo dpkg -i powershell_6.0.0-alpha.14-1ubuntu1.16.04.1_amd64.deb

Instalátor pravděpodobně vyhodí nějaké nesplněné dependencies, což vyřešíme takhle:

$ sudo apt-get install -f

Vše je připraveno, můžeme skočit do interaktivní Powershell session. Protože budeme určitě chtít rovnou nainstalovat Azure moduly, což vyžaduje administrátorské oprávnění (ostatně na Windows také musíte instalovat modely ze session spuštěné jako Run as Administrator), použijeme sudo.

$ sudo powershell

PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS /home/tomas>

Nainstalujeme AzureRM modul. Normálně byhom použili Install-Module AzureRM, ale to je zatím v této Alpha14 rozbité - nicméně lze to vyřešit jinak:

PS /home/tomas> Install-Package -Name AzureRM.NetCore.Preview -Source https://www.powershellgallery.com/api/v2 -ProviderName NuGet -ExcludeVersion -Destination  /usr/local/share/powershell/Modules

To je vše. Privilegovaný powershell už nepotřebujeme, vyskočíme.

PS /home/tomas> exit

Spusťme powershell a naimportujme AzureRM.NetCore.Preview modul.

$ powershell
PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS /home/tomas> Import-Module AzureRM.NetCore.Preview

Pojďme se teď nalogovat do Azure. Všimněte si, že proces je jiný, než jak známe z Windows PowerShell. Podubně jako u Azure CLI musíme jít na web, zadat kód a nalogovat se.

PS /home/tomas> Login-AzureRmAccount
VERBOSE: To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code CEFWN2QK8 to authenticate.


Environment           : AzureCloud
Account               : xxxxx
TenantId              : xxxxx
SubscriptionId        : xxxxx
SubscriptionName      : mojesub
CurrentStorageAccount :

Naimportujme si moduly a můžeme si prohlédnout třeba resource groupy v mé subscription.

PS /home/tomas> Get-AzureRmResourceGroup -Name test


ResourceGroupName : test
Location          : westeurope
ProvisioningState : Succeeded
Tags              :
ResourceId        : /subscriptions/xxxxx/resourceGroups/test

 

V Alpha verzi jsou možnosti omezené, ale vývoj jde rychle dopředu. Ostatně mi šlo především o získání jistého náhledu co to vlastně znamená mít PowerShell v Linuxu.