WindowsなどOS(オペレーションシステム)の操作には、アイコンなどで直感的に操作するGUI(Graphical User Interface)と、文字でコマンドを打ち込んで操作するCUI(Character User Interface)があります。一般的なユーザーにとってはGUIが使いやすく馴染みがありますが、プログラミングを使いこなす開発者やエンジニアにとってはCUIの方が使いやすいのではないでしょうか。
Windowsの管理に関しては、マウスを使わずにキーボードによって作業ができるCLI(Command line Interface)として「PowerShell」があります。マイクロソフトが独自に開発したCLIで、Windows Server 2008 R2 / Windows 7 から標準で搭載されるようになりました。
クラウドのAzureで使えるPowerShellがAzure PowerShellです。コマンド(文字による命令)によって細かな設定をしたり、自動化をしたり、効率的な開発のために便利なツールです。ここではCLIの基礎知識、Azure PowerShellの概要、インストール方法などについて解説します。
CLIとAzure PowerShellの概要
開発者の方であれば基本事項なので、CLIが何か、どんなメリットがあるかについては十分に理解されているでしょう。とりあえず、基礎知識として簡単に整理します。
CLIとPowerShell
Windowsマシンであれば、コマンドプロンプトでも文字でシステムに命令を送ることができます。しかし、PowerShellの最大のメリットは「開発環境を備えている」ことです。つまり複雑な処理については「コマンドレット」を作ることができます。コマンドレットは、操作の指示をまとめたものです。コマンドプロンプトはコマンドを覚える必要がありますが、コマンドレットでは「どのような操作か?」ということが分かりやすく記述できます。よく使われる処理はコマンドレットにして自動化すると効率的です。
Windows環境ではPowerShellが標準装備されています。.NET Frameworkによって構築されているため、開発環境を準備する必要がありません。統合開発環境が整っているとともに文法や用法が統一されているので、わかりやすい自動処理ができます。
Azure PowerShellとは
もともとはWindowsマシンの管理のためのCLIでしたが、その後PowerShell はWindows Server 2008 / Windows 7から標準装備されるようになりました。さらにAzureのために用意されたCLIがAzure PowerShellです。
Azure PowerShellは、Azureのリソースを管理できるように設計されたCLIで、ローカルPCにインストールまたはブラウザで利用できます。
Azure Resource Managerとの関係
Azure のデプロイおよび管理サービスには「Azure Resource Manager(RM)」があります。Azureのリソース作成、管理、削除などには、複数の方法で実行することが可能です。開発者がAzure Portal、Azure Power ShellやAzure CLIなどのSDK、RESTのAPIなどから要求を入力すると、Azure Resource Managerで要求の認証と承認が行われ、さまざまなサービスの管理を実行する仕組みになっています。
Azure Resource Managerは、テンプレートによってインフラストラクチャを管理し、あらゆるリソースをグループでデプロイ、管理、監視します。
Azure cloud Shellの概要と使い方
クラウドだからこそできるシェルによる管理用のCLIが、Azure cloud Shellです。1ユーザーごとに割り当てられた自動的な認証によるブラウザベースのシェルによって、あらゆる場所から利用できます。エクスペリエンスはPowerShellだけでなくBasも選択可能です。編集のためには、オープンソースのMonaco Editorベースによる統合ファイルエディターが用意されています。
Azure cloud Shellは、以下から利用できます。
- portal.azure.com
- shell.azure.com
- Azure CLIドキュメント
- Azure PowerShellドキュメント
- Azure Mobile App
- Visual Studio CodeのAzure Account拡張機能
Azure PowerShellを最も簡単に試す方法は、Azure Cloud Shellを利用することです。 ただし、Azure Cloud ShellはLinux コンテナー上でPowerShell 6を実行するので、Windows独自の機能を利用できません。
また、注意事項としては、ホストとなるマシンは無料でインストールが不要ですが、Azure cloud Shellを使うときには費用がかかります。さらに、操作のない状態で20分が経過するとタイムアウトするなど、いくつかの注意すべきポイントがあります。
Azure Cloud Shellの基本的な使い方の流れ
Azure Cloud Shellの基本的な使い方について、その流れを概略としてまとめると以下のようになります。
- Azure Portal上部のナビゲーションから「Cloud Shell」のアイコンをクリックします。
- ウィンドウの下の「PowerShell (Windows)」を選択します。
- サブスクリプションを選択して「ストレージの作成」を選択します。
- 左側のドロップダウンメニューから「PowerShell 」を選択するとAzureドライブになります。
- PowerShellコマンドを実行します。以下のような操作が可能です。
- Azure リソース間を移動する(cd、dir)
- SSHを使用する
- 使用可能なコマンドを一覧表示する
- カスタムモジュールをインストールする
- Azure Filesを使ってデータを保存する
- カスタム プロファイルを使う
- Gitを使う
- シェルを終了する
Azure Cloud Shellの価格
Azure Files共有に基づいた料金で、ストレージに格納したデータ量、トランザクションにおける転送量と種類、データ冗長オプションによって料金が変わります。Azure Cloud ShellからAzure File共有のマウントを解除しても、基本リソースは削除されないため継続して課金されることにも注意が必要です。
Azure PowerShellをインストールする
続いて、Azure Power Shellのインストールについて解説します。Azure PowerShellを使えば、Azureのリソースをコマンドレットで直接管理できるようになります。ダウンロードの方法は以下のようになります。
Azure PowerShellモジュールは、PowerShellGetを使用してインストールします。Windowsだけでなく、macOSとLinuxプラットフォーム上でも使用可能です。
必要条件の確認
Azure PowerShellをインストールするときには、まずバージョンを確認して、最新バージョンのPowerShell Coreをインストールする必要があります。PowerShell のバージョンを確認するには「$PSVersionTable.PSVersion」のコマンドを実行します。
Windows 10はPowerShell 5.1 が標準でインストールされていますが、必要に応じて更新します。また、.NET Framework 4.7.2 以降がインストールされていることも条件になります。
モジュールのインストール
コマンドラインを使ってインストールします。推奨するインストールは、アクティブユーザー限定です。アクティブユーザー以外のすべてのユーザーに対してインストールする場合は、管理者の権限が必要になります。PowerShellギャラリーは規定ではPowerShellGetの信頼できるリポジトリとして構成されません。そのことが表示されます。
「Are you sure you want to install the modules from 'PSGallery'?」というメッセージが表示されたときに「[Y] Yes」または「[A] Yes to All」を選択するとインストールされます。
なお、Windows 用のPowerShell 5.1では、AzureRMと新しいAzモジュールを同時にインストールできません。AzureRMの使用を継続するためには、PowerShell Core 6.x 以降用のAzモジュールのインストールが必要です。したがって、PowerShell Core 6.x 以降をインストールした後で、PowerShell Coreターミナルでインストールする必要があります。
Azモジュールとは
インストールの注意事項で「Azモジュール」について言及しましたが、Azモジュールは、2018年12月に公開された新しいモジュールです。AzureRMと同等の機能を持ちながら、クロスプラットフォームのサポート、コマンドの短縮化などの改良が加えられています。
Azモジュールによって、コマンドレットとモジュールの設計と名前付けに一貫性をもたせることによって、コマンドレットが覚えやすく用途が明確になりました。コマンドレットは「動詞-Az名詞」を使用するとともに、モジュールの数も整理されました。
既存のAzureRMからAzモジュールにアップグレードするには、AzureRMモジュールをアンインストールした後に、Azモジュールをインストールします。互換モードによって、既存のスクリプトを新しい構文にすることも可能です。
まとめ
GUIは直感的に分かりやすい便利なインターフェースですが、アイコンを間違えてドラッグしてゴミ箱に捨ててしまうなど、ヒューマンエラーが起きやすいことが難点です。
Azureは専門的な開発者以外のユーザーも配慮して、視覚的に分かりやすいインターフェースを備えています。さらにCLIに慣れ親しんだ開発者のために、コマンドレットによって自動化できるPowerShellという強力なツールを提供しています。学習のためのトレーニングツールも充実しているので、本格的にAzureを使いこなしたい開発者は、ラーニングのコンテンツを利用するとよいでしょう。