Witam w Nowym Roku – oby był tak dobry jak 2016 a nawet lepszy 🙂
Nowy Rok – nowe wyzwania! Od jakiegoś czasu pracuję z Azure nie tylko na Windows ale też na Linuxie. Oczywiście z obu systemów można zarządzać zasobami chmury przez przeglądarkę i portal administracyjny Azure (o ile oczywiście dysponujemy interfejsem graficznym w Linuxie), ale co z Powershell, którego znamy z Windows’a? Niestety pod Linuxem nie jest on dostępny, Microsoft daje nam jednak dostęp do Azure Command-Line Interface (Azure CLI), który możemy wykorzystać również na MacOS. W tym wpisie omówię proces instalacji Azure CLI na Linuxie dokładnie na dystrybucji CentOS 7.2. Jest to o tyle ważne, że w tej dystrybucji wykorzystuje się yum do instalacji wszelkiego rodzaju paczek z repozytoriów. W Ubuntu jest to np. apt-get.
1. Instalacja Node.js (npm)
Najpierw uruchamiam skrypt, który doda niezbędne repozytoria do zainstalowania Node.js
1 |
[tuczap@localhost ~]$ sudo curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - |
Następnie jako root instaluję paczkę nodejs
1 2 3 |
[tuczap@localhost ~]$ su Password: root@localhost.localdomain:/home/tuczap# yum -y install nodejs |
Instalacja powinna zakończyć się komunikatem w stylu
1 2 3 4 5 6 7 |
Installed: nodejs.x86_64 1:6.7.0-107.el7 Dependency Installed: libuv.x86_64 1:1.9.1-1.el7 npm.x86_64 1:3.10.3-107.el7 Complete! |
2. Instalacja i używanie azure-cli
Teraz dalej jako root instaluję azure-cli
1 |
root@localhost.localdomain:/home/tuczap# npm install -g azure-cli |
Teraz powinienem już mieć możliwość wywoływania komend azure:
1 2 3 4 |
[tuczap@localhost ~]$ azure help Microsoft Azure CLI would like to collect data about how users use CLI commands and some problems they encounter. Microsoft uses this information to improve our CLI commands. Participation is voluntary and when you... |
Powyższa wiadomość pojawia się standardowo po pierwszym uruchomieniu azure cli. Po podjęciu decyzji na temat zgody co do przesyłania informacji użytkowych do Microsoft powinniśmy ujrzeć pomoc do azure cli wraz z listą dostępnych komend.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
info: Executing command help info: _ _____ _ ___ ___ info: /_\ |_ / | | | _ \ __| info: _ ___/ _ \__/ /| |_| | / _|___ _ _ info: (___ /_/ \_\/___|\___/|_|_\___| _____) info: (_______ _ _) _ ______ _)_ _ info: (______________ _ ) (___ _ _) info: info: Microsoft Azure: Microsoft's Cloud Platform info: info: Tool version 0.10.6 help: help: Display help for a given command help: help [options] [command] help: help: Log in to an Azure subscription using Active Directory or a Microsoft account identity. help: login [options] help: help: Log out from Azure subscription using Active Directory. Currently, the user can log out only via Microsoft organizational account help: logout [options] [username] help: help: Open the portal in a browser help: portal [options] help: help: Manages the data collection preference. help: telemetry [options] help: help: Commands: help: account Commands to manage your account information and publish settings help: acs Commands to manage your container service. help: ad Commands to display Active Directory objects help: appserviceplan Commands to manage your Azure appserviceplans help: availset Commands to manage your availability sets. help: batch Commands to manage your Batch objects help: cdn Commands to manage Azure Content Delivery Network (CDN) help: config Commands to manage your local settings help: datalake Commands to manage your Data Lake objects help: feature Commands to manage your features help: group Commands to manage your resource groups help: hdinsight Commands to manage HDInsight clusters and jobs help: insights Commands related to monitoring Insights (events, alert rules, autoscale settings, metrics) help: iothub Commands to manage your Azure IoT hubs help: keyvault Commands to manage key vault instances in the Azure Key Vault service help: lab Commands to manage your DevTest Labs help: location Commands to get the available locations help: network Commands to manage network resources help: policy Commands to manage your policies on ARM Resources. help: powerbi Commands to manage your Azure Power BI Embedded Workspace Collections help: provider Commands to manage resource provider registrations help: quotas Command to view your aggregated Azure quotas help: rediscache Commands to manage your Azure Redis Cache(s) help: resource Commands to manage your resources help: role Commands to manage role definitions help: servermanagement Commands to manage Azure Server Managment resources help: servicefabric Commands to manage your Azure Service Fabric help: storage Commands to manage your Storage objects help: tag Commands to manage your resource manager tags help: usage Command to view your aggregated Azure usage data help: vm Commands to manage your virtual machines help: vmss Commands to manage your virtual machine scale sets. help: vmssvm Commands to manage your virtual machine scale set vm. help: webapp Commands to manage your Azure webapps help: help: Options: help: -h, --help output usage information help: -v, --version output the application version help: help: Current Mode: arm (Azure Resource Management) |
Pomoc do azure cli jest dość obszerna, jeśli chcemy zobaczyć więcej informacji na temat danej komendy wystarczy użyć flagi -h np.:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
[tuczap@localhost ~]$ azure account -h help: Commands to manage your account information and publish settings help: help: List the imported subscriptions help: account list [options] help: help: Show details about a subscription help: account show [options] [subscriptionNameOrId] help: help: Set the current subscription help: account set [options] <subscriptionNameOrId> help: help: Remove a subscription or environment, or clear all of the stored account and environment info help: account clear [options] help: help: Commands to manage your account environment help: account env list [options] help: account env show [options] [environment] help: account env add [options] [environment] help: account env set [options] [environment] help: account env delete [options] [environment] help: help: Options: help: -h, --help output usage information help: help: Current Mode: arm (Azure Resource Management) |
Dodatkowo pełną listę komend możemy znaleźć pod tym linkiem.
3. Włączenie autouzupełniania w azure-cli
Niestety domyślnie azure cli nie jest skonfigurowanie do autouzupełniania komend co jest przydatną funkcją. Aby włączyć autouzupełnianie należy wykonać w konsoli następujące komendy:
1 2 |
[tuczap@localhost ~]$ azure --completion >> ~/azure.completion.sh [tuczap@localhost ~]$ echo 'source ~/azure.completion.sh' >> ~/.bash_profile |
U mnie po wrzuceniu do bash_profile autouzupełnianie jeszcze nie działało więc musiałem jeszcze wykonać poniższe polecenie
1 |
[tuczap@localhost ~]$ echo 'source ~/azure.completion.sh' >> ~/.bashrc |
Teraz po wpisaniu części nazwy komendy i naciśnięciu klawisza TAB powinna ona zostać uzupełniona o brakujący tekst.
4. Logowanie do Azure’a i zmiana aktywnej subskrypcji
Logowanie do Azure przez cli jest inne niż w Powershell
1 2 3 |
[tuczap@localhost ~]$ azure login info: Executing command login |info: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code xxxxxxx to authenticate. |
Trzeba otworzyć przeglądarkę, przejść na wskazany adres https://aka.ms/devicelogin i podać przy logowaniu kod kryjący się pod „xxxxxxx”. Po zalogowaniu dostaniemy w konsoli komunikat info: login command OK.
Jeśli mamy więcej subskrypcji do zarządzania podpiętych pod jedno konto to możemy je wyświetlić:
1 2 3 4 5 6 |
[tuczap@localhost ~]$ azure account list info: Executing command account list data: Name Id Current State data: --------------------------- ------------------------------------ ------- ------- data: Visual Studio Enterprise xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx true Enabled data: Azure Subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx false Enabled |
Przełączamy się między subskrypcjami komendą azure account set
1 2 3 4 5 |
[tuczap@localhost ~]$ azure account set "Azure Subscription" info: Executing command account set info: Setting subscription to "Azure Subscription" with id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx". info: Changes saved info: account set command OK |
To by było na tyle jeśli chodzi o podstawy pracy z azure cli. Jak widzicie jest to zupełnie inna składnia niż Powershell, ale dla tych, którzy na co dzień pracują z Linuxem jest to dobra alternatywa do zarządzania Azure przez przeglądarkę 🙂
Pozwolę sobie dorzucić 3 grosze na temat Service Principal i ominięcia interaktywnego logowania, które jest problemem przy skryptach.
https://lnx.azurewebsites.net/non-interactive-login-in-azure-cli-xplat-cli/
Dzięki Michał za input 🙂 Oczywiście Service Principal można wykorzystać zarówno w skryptach CLI jak i Powershell