SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

PowerShell で Azure を操作する際のメモ

one comment

PowerShell で Azure を操作する際のメモを。

Windows Azure PowerShell の技術情報は以下のものが参考になります。
Windows Azure PowerShell

■Windows Azure PowerShell のインストール


Windows Azure PowerShell を実行するためのモジュールは以下からダウンロードすることができます。

Windows Azure SDK and Tools

Command line tools に [Windows Azure PowerShell]

image

こちらからインストーラーをダウンロードして実行すると WebPI 経由で必要なモジュールをダウンロードしてインストールが行われます。

インストールが行われると、[Windows Azure PowerShell] が起動できるようになりますので、こちらから起動するか
image

通常の通り、PowerShell を起動して、[Import-Module Azure] を実行することで Azure 用のモジュールが読み込まれます。
# Windows Server 2012 / Windows 8 であれば Import-Module を実行しないでも使用できるかと思いますが。

Windows 8 の場合は PowerShell ISE をスタート画面に表示させるためにはスタート画面のチャームの [設定] から [タイル] を選択して、[管理ツールを表示] をオンにすると表示させることができます。
# 久々にクリアインストール環境を触っていたらすっかり忘れていました…。
image

 

■サブスクリプションに接続


今回は PowerShell を実行する端末に管理証明書をインストールしていませんので、PublishSettingsFiles を使用して Azure に接続をしたいと思います。

PublishSettingsFile の入手は 2 種類あり、

  1. PowerShell から [Get-AzurePublishSettingsFile] を実行する
  2. https://windows.azure.com/download/publishprofile.aspx にアクセスして入手する

のどちらかを利用することになるかと。
# PowerShell を実行するとブラウザが起動して URL に接続がされます。

ブラウザが起動したら Azure のサインイン画面が表示されますので、サブスクリプションにアクセスができるアカウントの資格情報を入力すると、[.publishsettings] ファイルがダウンロードでき、これを利用することでサブスクリプションに接続ができるようになります。

ブラウザが起動して、サインインをしたタイミングで Azure 側にそのアカウントが使用できるサブスクリプションについての管理証明書が登録されます。
# サインインした状態でコマンドレットを連打していたら、そのたびに管理証明書が登録されていて、気づいたら大変なことになっていました。

作成したファイルをロードするためのコマンドレットである、[Import-AzurePublishSettingsFile] を実行すると、ユーザーの証明書ストアにWindows Azure Tools の証明書がロードされます。

Import-AzurePublishSettingsFile "publishsettingsファイルのフルパス"

 

image

管理証明書の作成や登録を PublishSettingsFile を使用すると簡略化できるようですね。

Import-AzurePublishSettingsFile を実行することで読み込んだファイルで利用できるサブスクリプションの操作が可能となります。

一度 Import-AzurePublishSettingsFile を実行すると PowreShell のウィンドウを閉じて再度開いた際には Import-AzurePublishSettingsFile を実行しなくてもサブスクリプションに接続をすることができます。

これは初回に Import-AzurePublishSettingsFile を実行した際に、

  • ユーザーの [個人] の証明書ストアに証明書が登録される
  • [C:Users<ユーザー名>AppDataRoamingWindows Azure Powershell] に接続情報のファイルが登録される
    image

ことにより、初回の実行だけで済むようになっているようです。

 

■Web ロールを PowerShell からデプロイ


本当は仮想マシンをデプロイするのを自動化したいのですが、今回の投稿では設定が少なさそうな Web ロールのデプロイをしてみたいと思います。

複数のサブスクリプションがある場合には最初にどのサブスクリプションを使用するか選択しておきます。
どのサブスクリプションを操作するからは [Select-AzureSubscription] で設定することができます。

Select-AzureSubscription "<サブスクリプション名>"

 

これで操作対象のサブスクリプションを変更することができます。1 つしかサブスクリプションが登録されていない場合は不要ですが。

デフォルトのサブスクリプションがどれになっているかは、[Get-AzureSubscription] を実行して、[IsDefault] から確認できます。
デフォルトのサブスクリプションの変更は [Set-AzureSubscription] の [-DefaultSubscription] でできるようですので、頻繁に使用するサブスクリプションがある場合はデフォルトを変更しておいてもよいかもしれないですね。

使用するサブスクリプションの [CurrentStorageAccount] が設定されていないとデプロイをした際にエラーとなりますので、[Set-AzureSubscription] を実行して、対象のサブスクリプションのストレージアカウントを設定しておく必要があります。

Set-AzureSubscription "<サブスクリプション名>" -CurrentStorageAccount "<ストレージアカウント名>"

 

ストレージアカウントの作成もコマンドレットでできますので [New-AzureStorageAccount] を使用して作成するとよいかもしれないですね。

New-AzureStorageAccount -StorageAccountName "<アカウント名>" -Location "East Asia"

 

どのサブスクリプションを操作するかがを決め、パッケージをアップロードする際に使用するストレージアカウントを設定したらクラウドサービスを作成します。
クラウドサービスの作成は [New-AzureService] を使用します。

以下は東アジアにクラウドサービスを作る例になります。

New-AzureService -ServiceName "<サービス名>" -Location "East Asia"

 

これでクラウドサービスが作成されましたのでパッケージのデプロイを行います。
デプロイは [New-AzureDeployment] で実行できます。

以下はステージングにデプロイする例になります。

New-AzureDeployment -ServiceName "<サービス名>" -Slot "Staging" -Package "<パッケージのパス>" -Configuration "<構成ファイルのパス>"

コマンドレットを実行するとパッケージを Azure ストレージにアップロードしてデプロイが行われます。
インスタンス数に関しては [Set-AzureRole] を使用すると変更できそうですね。

環境が不要になった場合は、[Remove-AzureDeployment] で対象のクラウドサービスからデプロイを削除し、[Remove-AzureService] でクラウドサービス自体を削除します。
ストレージアカウントも不要だったら [Remove-AzureStorageAccount] で削除します。

Remove-AzureDeployment -ServiceName "<サービス名>" -Slot "Staging" -Force
Remove-AzureService -ServiceName "<サービス名>" -Force
Remove-AzureStorageAccount -StorageAccountName "<ストレージアカウント名>"

 

最終的には以下のような流れになるでしょうか。

Get-AzurePublishSettingsFile
Import-AzurePublishSettingsFile "publishsettingsファイルのフルパス"

Select-AzureSubscription "<サブスクリプション名>"

New-AzureStorageAccount -StorageAccountName "<ストレージアカウント名>"  -Location "East Asia"
Set-AzureSubscription -SubscriptionName "<サブスクリプション名>" -CurrentStorageAccount "<ストレージアカウント名>"

New-AzureService -ServiceName "<サービス名>" -Location "East Asia"
New-AzureDeployment -ServiceName "<サービス名>" -Slot "Staging" -Package "<パッケージファイル名>" -Configuration "<構成ファイル名>"

# Set-AzureRole -ServiceName "<サービス名>" -Slot "Staging" –RoleName "<ロール名>" –Count <インスタンス数>

Remove-AzureDeployment -ServiceName "<サービス名>" -Slot "Staging" -Force
Remove-AzureService -ServiceName "<サービス名>" -Force
Remove-AzureStorageAccount -StorageAccountName "<ストレージアカウント名>"

 

テスト環境の構築は結構簡単に組めそうですね。

Written by masayuki.ozawa

4月 29th, 2013 at 10:54 pm

One Response to 'PowerShell で Azure を操作する際のメモ'

Subscribe to comments with RSS or TrackBack to 'PowerShell で Azure を操作する際のメモ'.

  1. […] PowerShell で Azure を操作する際のメモ の続きになります。 […]

Leave a Reply

*