Azure Resource Manager ツールのプレビュー版を発表
このポストは、8 月 11 日に投稿した Azure Resource Manager Tools Preview の翻訳です。
Azure Resource Manager ツール プレビュー版
今回、Visual Studio 用 Azure Resource Manager ツール プレビュー版 (英語) の一般リリースが発表されました。このツールのプレビュー版では、以下の操作を実行できます。
- Azure ギャラリーのテンプレートを使用してアプリケーションを作成する
- Azure Resource Manager のデプロイメント テンプレート (データベースを含む WebSites など) やパラメーター ファイル (開発、ステージング、本番環境にそれぞれ異なる設定を使用するなど) を作成、編集する
- リソース グループを作成してテンプレートをデプロイすることで、リソースの作成を簡素化する
新しい Azure ポータルと Azure Resource Manager (英語) が発表されたのは、Build 2014 (英語) でのことです。Azure Resource Manager では、アプリケーションを構成するリソース (WebSites や SQL Database など) を宣言的な方法で記述した、再利用可能なデプロイメント テンプレートを作成することができます。テンプレートを利用することで、複雑な開発、テスト、運用環境を繰り返し簡単に作成できます。また、Azure プレビュー ポータルを使用して、アプリケーションを構成するリソースを一元的に管理、監視できます。
今回のツールのプレビュー版では、Azure ギャラリーのテンプレートを使用してアプリケーションを作成したり、JSON テンプレートを使用して Azure リソースを定義して管理したりすることができます。そのため、Azure でのアプリケーションの開発およびテストに必要な環境を迅速にセットアップすることが容易になりました。主要な機能としては、Visual Studio と Azure ギャラリーの統合と、Azure Resource Manager デプロイメント テンプレートの作成および編集の 2 つが挙げられます。
この記事では、シナリオに沿ってこのツールの使用方法をご紹介します。まず、Azure ギャラリーのテンプレートを基にプロジェクトを作成し、その際にソリューションに追加されるアイテムについてご説明します。次に、アプリケーションで必要となる Azure リソース グループと Azure リソースを作成してデプロイします。リソース グループとリソースをプロビジョニングしたら、アプリケーションを発行します。
今すぐツールをダウンロード: Visual Studio 用 Azure Resource Manager ツール プレビュー版 (英語)
Azure クラウド ギャラリー – クラウド アプリ プロジェクトの作成
Azure Resource Manager ツールでは、Azure ギャラリーのテンプレートを使用して Visual Studio アプリケーションを作成することができます。テンプレートを利用するには、ツールのプレビュー版をインストールしてから、[File] -> [New Project] -> [Cloud] -> [Cloud App from the Azure Gallery] の順に選択します。以下のスクリーンショットでは、この操作を実行し、プロジェクトに “MyAzureCloudApp” という名前を付けています。
Azure ギャラリーからクラウド アプリを作成すると、利用可能なテンプレートの一覧が表示されます。現時点では、よく使用される 2 種類の Azure ギャラリー テンプレートを選択できます。
- Website: このテンプレートでは、Application Insights を使用する ASP.NET Web サイトが作成されます。
- Website + SQL: このテンプレートでは、ASP.NET Web サイト、Azure SQL Database のサーバーとデータベース、監視機能の Application Insights が作成されます。
このツールのプレビュー版では 2 種類のテンプレートのみを利用できますが、今後は Cache、Storage、Virtual Machines など、その他の Azure 機能を使用した一般的なアプリケーションのシナリオに対応できるように、さらにテンプレートが追加される予定です。
ここでは、Website テンプレートを選択します。
クラウド アプリ ソリューション
Azure ギャラリーからクラウド アプリを作成すると、ASP.NET Web サイト プロジェクトと、新しいプロジェクトの種類である Azure Resource Manager デプロイメント プロジェクトの MyAzureCloudApp.Deployment を確認できます。デプロイメント プロジェクトには、デプロイメント テンプレート ファイル (WebSite.json)、テンプレート パラメーター定義 (WebSite.param.dev.json)、リソースを Azure にデプロイするための PowerShell スクリプト (Publish-AzureResourceGroup.ps1) が含まれます。
それでは、ソリューションに含まれるこれらのアイテムについて 1 つずつご説明します。
- デプロイメント プロジェクトは、リソース定義、パラメーター、リソースをデプロイする PowerShell スクリプトを含むコンテナーです。後述しますが、デプロイメント プロジェクトを右クリックして定義したリソースをデプロイすることもできます。
- WebSite.json ファイルは、リソースを定義するデプロイメント テンプレート ファイルです。このファイルには、後でデプロイするすべてのリソースが格納されます。この例では Website テンプレートを選択したため、このファイルには WebSites を作成するために必要な定義が格納されています。この詳細については後でご説明します。
- WebSite.param.dev.json には、デプロイメント テンプレート ファイルで必要となるすべてのパラメーターの値が格納されています。たとえば、WebSites の名前もパラメーターであり、その値がこのファイルに格納されます。
My Azure リソースの作成 – ダイアログを使用する方法
リソースとリソース グループを Azure にデプロイする方法は 2 つあります。簡単なのは、デプロイメント プロジェクトを右クリックして、[Deploy to Resource Group] を選択する方法です。選択すると、[Deploy to Resource Group] ダイアログが表示されます。
Web アプリケーションで必要となるすべてのリソースを論理グループ化して格納する Azure リソース グループを作成する必要があります。そのためには、[Resource group] コンボ ボックスをクリックし、[Create New] を選択します。
Azure リソース グループに任意の名前を付け (上記の例では “MyAzureCloudApp”)、場所を指定します。設定を完了して [Create] をクリックすると、Azure リソース グループが自動的にプロビジョニングされます (ただし、この時点ではリソースは含まれません)。
先ほどのスクリーンショットのように、デプロイメント テンプレート (website.json)、テンプレート パラメーター ファイル (webite.param.dev.json)、ストレージ アカウントを選択します。ストレージ アカウントを取得していない場合は、続行する前にストレージ アカウントを作成する必要があります。
次に、[Edit Parameters] をクリックします。以下のスクリーンショットのように、WebSites 名、ホスティング プラン名、サイトの場所を定義します。
各パラメーターの意味について説明しましょう。siteName パラメーターは WebSites 名を表します。hostingPlanName は Web ホスティング プラン名を表します。ホスティング プランとは、複数の WebSites 間で共有できる機能と容量の設定です。siteLocation は WebSites を配置するリージョンで、“West US” や “Central US” など、Azure WebSites の有効なリージョンのいずれかを指定します。sku パラメーターは、上記の例では既定値の “Free” のままとしています。これは、Azure WebSites の料金レベルを表します (この他に、Shared、Basic、Standard を選択できます)。workerSize も 0 のままとしています。この設定は、WebSites を実行する Virtual Machines のサイズを表します (0 = S、1 = M、2 = L)。この例では、SKU サイズとして “Free” を選択したため、workerSize の設定は無効となります。この設定を有効にするためには、SKU サイズを Basic または Standard から選択する必要があります。
これらのパラメーターを入力したら、[Deploy] をクリックしてリソース グループとリソースを Azure にデプロイします。この例では、WebSites を Azure リソース グループ内にデプロイしました (機能が強化された新しい Azure ポータルで確認することができます)。
リソースのデプロイが完了すると、以下のように WebSite.param.dev.json ファイルにパラメーターの値が書き込まれます。
JSON ファイルを保存して、変更内容を保持します。
アプリケーションの発行
MyAzureCloudApp リソース グループを作成してデプロイしたら、アプリケーションを発行します。ここでは、テンプレートをデプロイした際にプロビジョニングした Web サイト リソースを発行します。
ソリューション エクスプローラーで ASP.NET Web プロジェクトを右クリックし、[Publish] を選択します。
発行ウィザードが起動し、発行先を選択する画面が表示されます。発行先として [Microsoft Azure Websites] を選択します。
Azure サブスクリプションの Azure WebSites の一覧が表示されます。先ほど作成した WebSites を選択します (以下の例では “mattsWebSite”)。完了したら、[OK] をクリックします。
発行に必要となるすべての設定が発行ウィザードに自動的に表示されるので、[Publish] をクリックします。しばらくするとアプリケーションが発行され、Web サイトがブラウザーに表示されます。この時点で、Web アプリケーションが MyAzureCloudApp リソース グループの Web サイト リソースに発行されます。
次に、Azure リソース グループを作成し、Azure リソースをデプロイする別の方法をご紹介します。
My Azure リソースのデプロイ – PowerShell を使用する方法
Azure にリソース グループを作成するもう 1 つの方法として、デプロイメント プロジェクト (Publish-AzureResourceGroup.ps1) に含まれている PowerShell スクリプトを実行する方法があります。このスクリプトは、最新の Azure PowerShell (バージョン 0.8.3 以降) を利用してリソース グループとリソースをデプロイします。
実行する前に、Website.param.dev.json ファイルに適切な WebSites 名、ホスティング プラン、WebSites の場所が格納されていることを確認します。内容を変更した場合は保存してください。
以下の例では、 WebSites 名を “mattsAwesomeSite” に変更したことにご注目ください。 WebSites 名を変更することをお勧めします。こうすることで、新しい WebSites が作成されることを確認できます。
ちなみに、Publish-AzureResourceGroup.ps1 ファイルをダブルクリックして Visual Studio のドキュメント ウィンドウに表示してみてください。PowerShell スクリプトに色分けが追加されたことをご覧いただけます。
次に、Publish-AzureResourceGroup.ps1 ファイルを右クリックし、[Open with PowerShell ISE] を選択します。
PowerShell ISE が起動します。これで、PowerShell スクリプトを実行できます。ただし、エラーが発生しないように以下の点を再確認してください。
1) Azure PowerShell (バージョン 0.8.3 以降) をインストールする必要があります。
a. Web Platform Installer (英語) を使用してインストールできます。“Microsoft Azure PowerShell” を選択してください。
2) これまでに PowerShell をあまり使用したことがない場合は、PowerShell スクリプトの実行を許可するために実行ポリシーを設定する必要があるかもしれません。実行ポリシーを設定するには、PowerShell ISE で “Set-ExecutionPolicy RemoteSigned” を実行し、今回のようにリモートで署名されたスクリプトの実行を許可する必要があります (注: このコマンドは管理者として実行する必要があります)。ポリシー設定を変更するかどうかを確認するダイアログが表示されます。
3) Azure PowerShell コマンド “Add-AzureAccount (英語)” を実行して、Azure アカウントで現在の PowerShell セッションにログインします。Azure の認証情報を入力するダイアログが表示されます。
4) Azure サブスクリプションに既定のストレージ アカウントが設定されていることを確認します。設定されていない場合は、2 つの方法で設定できます。
a. “Set-AzureSubscription -CurrentStorageAccountName ‘<ストレージ アカウント名>’” を実行して、このセッションの現在の Azure ストレージ アカウントを設定する
b. PowerShell スクリプト (Publish-AzureResourceGroup.ps1) を編集して、新しいパラメーター “-StorageAccountName myStorageAccount” を追加する (例: New-AzureResourceGroup … -StorageAccountName ‘defaultstoragerms’)
ここまで確認したら、PowerShell スクリプトを実行します (“> .\Publish-AzureResourceGroup.ps1”)。
リソース グループの場所 (有効なリージョン) を指定するように求めるメッセージが表示されます (以下の例では “West US” と指定)。
数秒で PowerShell スクリプトの実行が完了します。このスクリプトでは、詳細が出力されるため、作成されたリソースや、発生したエラー (存在する場合) を確認することができます。
ここで紹介したスクリプトでは、Azure リソース グループが存在しない場合に、Azure PowerShell (英語) コマンドレットを使用して作成します (スクリプトの -Name パラメーターで指定)。WebSite.json および WebSite.param.dev.json ファイルを Azure Resource Manager サービスに渡し、Azure Resource Manager サービスがデプロイする必要のあるリソースを正確に判断します。
スクリプトの実行が完了すると、(前述の方法で作成したのと同じように) Azure リソース グループと指定した Azure リソースが作成され、Azure ポータルで確認することができます。
まとめ
この記事では、Azure Resource Manager ツールのプレビュー版をご紹介しました。Azure ギャラリー テンプレートを基に Visual Studio でプロジェクトを作成する方法や、このツールを使用して Azure リソース グループと Azure リソースを定義してデプロイする方法についてご説明しました。Azure リソース グループは、アプリケーションをホストするために必要な環境をセットアップする際に非常に便利な方法です。また、このツールを取り入れることで、Visual Studio と Azure を使用した開発やテストをより快適に実行できるようになるでしょう。
最後までお読みいただき、ありがとうございました。ぜひページ下部のコメント欄にもご意見をお寄せください。