「Azure Cloud Shell」のシェル環境が、ローカルツールから直接利用できるようになりました。ローカルツールとは開発者向けの「Visual Studio Code」とWindows 10 バージョン1903以降向けの端末アプリ「Windows Terminal(Preview)」です。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「Azure Cloud Shell」は、Microsoft Azureのクラウドから提供されるLinuxコンテナベースのBashシェル環境であり、Azure CLI(az)およびPowerShell Core(pwsh)ベースのAzure PowerShell環境を提供します。
Azure Cloud Shellはもともと、LinuxコンテナのBashとWindows Server 2016コンテナのWindows PowerShell 5.1ベースのものでスタートしましたが、クロスプラットフォームの.NET CoreやPowerShell Coreの開発が進み、2018年7月にLinuxコンテナベースに一本化されました。
現在のAzure Cloud ShellのBashとPowerShellはベースが同じであり、Bashで「pwsh」と入力する、またはPowerShellで「bash」と入力すると、環境を相互に切り替えることができるようになっています。
Azure CLIやAzure PowerShellの環境は、Windowsだけでなく、LinuxやmacOSのローカル環境にインストールして利用できます。Azure Cloud Shellのメリットは、ローカルにこれらのツールをインストールして、更新を管理する必要がなく、Azureポータル(https://portal.azure.com)やAzure Cloud Shellサイト(https://shell.azure.com/)、Webブラウザだけで常に最新の安定バージョンを開始して、すぐにAzure上の自分のテナント管理に利用できることにあります(画面1、画面2)。
そして、Azure Cloud Shellをローカルの開発ツールや端末アプリに統合する方法がMicrosoftの公式ブログで紹介されました。
一つは、オープンソースでマルチプラットフォーム対応の高機能なコードエディタである「Visual Studio Code」への統合です。Visual Studio Codeに「Node.js 6」以降および「Visual Studio Code Azure Account Extension」を追加することで、Azure Cloud ShellのBashまたはPowerShellにツール内から直接接続できるようになります(画面3)。
もう一つの方法は、Windows 10 バージョン1903以降向けに提供されている、マルチタブ対応を含む高機能な端末アプリ「Windows Terminal(Preview)」への統合です。Windows Terminal(Preview)は、Windows 10標準のWindows PowerShell(powershell.exe)、コマンドプロンプト(cmd.exe)、Windows Subsystem for Linux(WSL)対応のインストール済みLinuxシェルを1つのアプリに統合し、シェル環境(透過設定、色、背景、アイコンなど)のカスタマイズ機能を提供します。
Windows Terminal(Preview)は、Windows 10 バージョン1903(またはInsider Previewや次期バージョン)向けのプレビュー版アプリですが、Microsoft Storeからこのアプリ(無料)をインストールするだけで、比較的簡単にAzure Cloud Shellとの統合を試すことができます。
具体的には、Windows Terminal(Preview)アプリの「Settings」をクリックして、テキストベースの構成ファイル「profiles.json」を開き、「"profiles":」セクションに上記の公式ブログで紹介されている設定例をコピー&ペーストするだけです。
他のプロファイル設定(Windows PowerShellやcmdなど)との間をカンマ(,)でつなぎ、「"profiles":」セクションの先頭、最後、またはその間の好みの場所に配置します(画面4)。「profiles.json」を上書き保存すると、「+」メニューに「Azure Cloud Shell」が追加されます。
「+」メニューから「Azure Cloud Shell」をクリックすると、「To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code ######### to authenticatite.」と表示されるので、Webブラウザを起動してURL「https://microsoft.com/devicelogin」にアクセスし、表示されたコード(#########の部分)を入力します。
その後、Visual Studio Codeアプリケーションにサインインするように求められるので、Azureサブスクリプションの資格情報を入力してサインインし、完了したらWebブラウザを閉じます(画面5)。
サインインが完了すると、接続先テナントを選択するように要求されるので、番号を入力し、接続設定を保存するかどうかを「y/n」で応答します。これでBashのシェルが起動します。「az」コマンドを入力すればAzure CLIを利用できますし、任意のLinuxコマンドを実行することもできます(画面6)。
Windows 10のテーマ設定やWindows Terminal(Preview)の設定によっては、公式ブログで紹介されているプロファイル設定ではBashのプロンプトやメッセージが表示されない場合があるようです。その場合は、「profiles.json」を開いて、色設定をカスタマイズしてください。例えば、「"background": #59B4D9",」を追加すると、以下の画面7のようになります。
Bashに接続後、「pwsh」と入力すると、PowerShell CoreベースのAzure PowerShell環境に切り替えることもできます。
ただし、Windows Terminal(Preview)でこれを行うと、PowerShellのカーソルが常に画面先頭の位置になってしまい、入力したコマンドの実行結果の出力がそのすぐ下に、既に表示されている内容の上に重なるように表示されるという問題があります。
これは極めて悪いエクスペリエンスであり、現状、PowerShellに切り替えて利用するには無理があります。この問題に関する以下のバグ報告には、原因としてPowerShellのカーソル位置の問い合わせにWindows Terminal(Preview)アプリが答える方法を知らないことなどが挙げられています。
ちなみに、カーソル位置と出力の問題は、Bash側でTERMを空設定(unset TERM)にすることで解消できましたが、その場合、入力コマンドのエコーが二重になるという別の問題がありました。
この他、AzureポータルのAzure Cloud ShellやAzure Cloud Shellサイトでは、[Ctrl]+[C]キー/[Shift]+[Insert]キーによるコピー/ペーストがサポートされます(Windowsの場合)。Visual Studio CodeのAzure Cloud Shellでは、[Ctrl]+[C]キー/[Ctrl]+[V]キーが利用可能です(Windowsの場合)。しかし、Windows Terminal(Preview)アプリ内のAzure Cloud Shellではできないようです。あくまでもアプリがプレビュー版であるということを承知の上で試してみてください。
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(2019-2020)SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.