【Azure for IT Pro】Windows Azure Service Management(WASM) コマンドレット 使い始め

Windows Azure Service Management コマンドレットを使用するには、事前準備が必要です。準備については以下を参照してください。

【Azure for IT Pro】Windows Azure Service Management コマンドレット がインストールできない場合の回避方法

試しに Windows Azure Service Management(WASM)コマンドレットを使ってみましょう。ちょっとしたコツが必要です。

ここでは、PowerShell を使用した管理の全体像について解説します。

■Windows Azure の管理について

Windows Azure Subscription の管理イメージは以下の通りです。ご覧のとおり、管理には大きく分けて3通りの方法が用意されています。

  • Windows Azure Management Portal
  • Visual Studio
  • Windows PowerShell

image

Windows Azure Portal は既定のポータルサイトのため利用者側では意識しませんが、Visual Studio や Windows PowerShell 等を使用して独自の管理用プログラムを作成する場合には、管理者であることを証明するために、クライアント証明書を用意しておく必要があります。クライアント証明書は自己署名証明書を利用することもできます。

クライアント証明書は、Windows Azure サブスクリプションにアップロードするとともに、自作のプログラムを実行するクライアントにもインストールしておかなければなりません。

■管理用証明書の準備

Windows Azure Service Management(WASM)を使用するための自己署名証明書(.cer)を用意しましょう。

.cer ファイルをを作成するには、Makecert コマンドを使用します。

コマンドを使用する前に、以下をインストールしておいてください。

コマンドは既に手元にある...という場合には、以下だけダウンロードしてインストールすれば使用することができます。

準備が出来たら、以下のコマンドを入力して .cer ファイルを作成してください。

C:\tmp> makecert -r -pe -a sha1 -n CN=AzureMgmt -ss My -sky exchange -e 12/31/2099 "AzureMgmt.cer"
    • -r : 自己署名証明書を作成します
    • -pe : プライベートキーをエクスポート可能にする
    • -a sha1 : 署名のアルゴリズムを sha1 とする
    • -n CN=AzureMgmt : 証明書の主体名。クライアント証明書なので主体名は何でもよい
    • -ss My : 作成した証明書の格納先。My は個人の証明書ストアを示している。
    • -sky exchange : キーのタイプを示しています。Exchangeオプションは、この証明書が署名と暗号化に使用できることを示しています。
    • -e 04/30/2099 : 証明書の有効期限です。開始日を指定するには –b を使用します。
    • “AzureMgmt.cer” : 出力する証明書のファイル名です

上記コマンドを実行すると、AzureMgmt.cer ファイルが作成され、かつ証明書の個人ストアにも格納されます。

image

■管理用証明書をアップロード

証明書のアップロードは、Azure Portal から行います。
image

これでAzureサブスクリプションを管理するための証明書の準備が完了です。

■PowerShell を使用してみる

では早速使ってみましょう。今回は、簡単なところで、Azure 上に展開済みのサービス一覧を取得してみます。使用するコマンドレットは、Get-HostedServices です。

PowerShell のコンソールを開き、以下のコマンドを入力して WASMコマンドレットを読み込んでおいてください。

PS C:\> Add-PSSnapin AzureManagementToolsSnapIn

① 証明書を取得する

WASM REST API にアクセスするには証明書の提示が必要です。証明書は既に個人ストアに格納されているので、そこから先ほど作成した AzureMgmt.cer を取得しましょう。これはとても簡単です。

実は、PowerShell を使用すると、ファイルシステムと同様の方法で証明書をブラウズすることができます。以下のように先ほど作成した証明書が表示されます。

PS C:\> cd cert: PS cert:\> cd .\CurrentUserPS cert:\CurrentUser> cd .\My PS cert:\CurrentUser\My> dir

    ディレクトリ: Microsoft.PowerShell.Security\Certificate::CurrentUser\My

Thumbprint Subject ---------- ------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx CN=AzureMgmt ・ ・ ・

PS cert:\CurrentUser\My>

では、この証明書をオブジェクトとして取得しましょう。使用するのは、おなじみの Get-Item です。

PS cert:\> $ManagementCert = Get-Item cert:\CurrentUser\MY\xxxxxxxxxxxxxxxxxxxxB4AAC33D06A3C89CC6C2

PS cert:\> $ManagementCert

    ディレクトリ: Microsoft.PowerShell.Security\Certificate::CurrentUser\MY

Thumbprint Subject ---------- ------- xxxxxxxxxxxxxxxxxxxxB4AAC33D06A3C89CC6C2  CN=AzureMgmt

PS cert:\>

では、この証明書を使用して Get-HostedServices コマンドを使用してみます。Get-HostedServices を使用して、すべてのホスト済サービスを取得するには以下のように入力します。

PS C:\> Get-HostedServices -SubscriptionId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -Certificate $ManagementCert

-ScbscriptionId に指定しているのは、契約しているAzureサブスクリプションの SubscriptionId です。これはAzureポータルで参照することができます。

image

-Certificate には、事前に取得した管理用証明書のオブジェクトを使用します。

以下のような結果が得られれば成功です。

Url : https://management.core.windows.net/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/services/hostedservices/conne                  cttestjuniachia AffinityGroup : Location : Description : Label : SubscriptionId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx Certificate : [Subject] CN=AzureMgmt

                 [Issuer] CN=AzureMgmt

                 [Serial Number] xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

                 [Not Before] 22/04/30 0:00:00

                 [Not After] 51/12/31 0:00:00

                 [Thumbprint] sssssssssssssssssssssssssssssssssssssssssss

・ ・ ・

今回はここまでです。

次回以降、もっと複雑な処理を自動化していきましょう。

つづき 【Azure for IT Pro】診断モニタにアクセスするための PowerShell スクリプト その1