怠惰は美徳

Windows Azure PowerShell は実に便利です。

例えば「動いてる VM 全部シャットダウンしたい」時、管理ポータルで一台ずつポチポチしてると空しくなりますよね。コンピュータに使われている気がして。そこで、PowerShell です。

Get-AzureVM | ?{$_.Status -eq "ReadyRole"} | Stop-AzureVM -Force

これで「あとやっとけよ、お前ら」と機械をこき使うことができるわけです。

また、以前「エンドポイントに ACL を!」で書いたエンドポイントACLのように、PowerShell を使わねければ(今のところ)設定できない機能もあったりします。

証明書の設定が面倒だった

この Windows Azure PowerShell、便利なのは前述の通りなのですが、使い始めるまでがちょっと面倒でした。マイクロソフトアカウントでログオンするだけの Azure 管理ポータルと違って、サービス管理 API を呼び出すためにクライアント証明書による認証の準備が必要だったからです。

Windows Azure サービス管理 API では、サービスに対して行われた要求が安全であることを保証するために、SSL を介した管理証明書の相互認証が必要です。匿名の要求は許可されません。
http://msdn.microsoft.com/ja-jp/library/windowsazure/ee460782.aspx

このために、

  1. 鍵ペアを生成して、
  2. 公開鍵証明書を証明書ストアからエクスポートして
  3. それを Azure 管理ポータルへアップロードして
  4. Set-AzureSubscription で設定する

という作業をする必要がありました。

また、これを楽に行うために Get-AzurePublishSettingsFileImport-AzurePublishSettingsFile というコマンドレットが用意されていたのですが、これは実行するたびに新たな証明書を生成するので、テキトーにあちこちのコンピュータで実行した結果、

管理ポータルが管理証明書だらけになる

という残念な現象が起きがちでした。こんなふうに:

image

こんな面倒とも、もうおさらばです。Windows Azure PowerShell が

Windows Azure Active Directory (WAAD) 認証に対応した

からです。実際にやってみましょう。

最新の Windows Azure PowerShell をインストール

まずは、Windows Azure Active Directory 認証に対応した最新の Windows Azure PowerShell (0.7.0) が必要です。WebPI でインストールしてください。Azure SDK 2.2 など必要なもの一式が同時に入りますから、インストールはそこそこ時間がかかりますがお待ちください。

image

インストールが完了するとこんな感じです。
※ 余談ですが、Windows Azure Storage Tools も一緒に入っていますね。これには便利な azcopy コマンドが含まれています。

image

バージョンを確認するには、次のコマンドを実行してください。Azure が 0.7.0 であれば OK です。
Get-Module | ft name,version

image

Windows Azure PowerShell初期設定

さて、今までならここで証明書の設定をするところですが、これからは簡単です。Windows Azure PowerShell を起動して、次のコマンドを打ち込んでください。

Add-AzureAccount

するとこんなのが出てきますので、Windows Azure管理ポータルへログオンする際に使っているアカウントでログオンしてください。マイクロソフトアカウントだけでなく、Windows Azure Active Directoryのアカウントや、フェデレーションしてる企業アカウントでもOKです。

image

こんなふうに出れば成功です。

image

じゃ、一つコマンド打ってみましょう。

Get-AzureVM

image

無事に実行できましたね。以前に比べると簡単に Windows Azure PowerShell を活用できるようになりました。

※ 補足: 「既定のディレクトリ」について

さて、WAAD で認証ができるようになったとはいっても、

WAAD にユーザーなんか作った覚えはない 

という方が多いのではないでしょうか。実は、この機能を有効に活用していただくために、次のような変更が行われています。

その 1

  • 現在のアカウント (管理ポータルにログオンするときに利用しているマイクロソフトアカウントなど) に WAAD のディレクトリ(テナント) がなければ、「既定のディレクトリ」という名前で新規作成。

管理ポータルをご確認ください。こんな「既定のディレクトリ」というやつができていると思います。

image

その 2

  • 現在のアカウントを、WAAD のテナントに登録
    • 既存のテナントがあればそちらに、無い場合は自動的に作成された「既定のディレクトリ」に登録

私の場合、下図のようにマイクロソフトアカウントが登録されています。

image

「勝手にディレクトリとユーザーなんか作りやがって課金はどうなる!」と思われるかもしれませんが、 WAAD は 500,000 オブジェクトまでは無料、標準状態ではそもそも 150,000 オブジェクト以上は作れないようになっているので、今回自動作成された「既定のディレクトリ」による課金が発生することはありません。

それでは、Windows Azure PowerShellをご活用ください。

関連情報

How to install and configure Windows Azure PowerShell

Windows Azure: Backup Services Release, Hyper-V Recovery Manager, VM Enhancements, Enhanced Enterprise Management Support

Windows Azure SDK for .NET 2.2 Release Notes

Manage Windows Azure accounts, subscriptions, and administrative roles

__END__