xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

Azure上のリソースを別リソースグループに移動する

ひとつ前の記事でも紹介しましたが、Microsoft Azure のプレビューポータルからリソースグループという概念が導入されました。そして、各リソース (= Web Apps / 仮想マシンなどのサービスひとつひとつ) は必ずどこかのリソースグループに属するようになっています。せっかくできた素敵なリソース管理機能なので、アプリケーション毎に分類したりして運用したいものです。

現状では、クラシックポータル (= 現行の管理ポータル) で作成したリソースについては 'Default-Storage-JapanWest' のように勝手に命名されたグループに属します。また、プレビューポータル上でも属するリソースグループの指定のタイミングはリソースの生成時のみとなっており、リソース作成後にグループを変更する機能は提供されていません。キチンとグループを整理したいと思ってもこのままでは一旦リソースを削除しなければなりません。せっかく加えた設定なども全部オジャン...なんてことにはなりたくありません!

ということで、リソースのリソースグループ間移動にチャレンジしてみました。

Microsoft Azure Powershell の導入

リソースのグループ間移動は Azure Powershell の Cmdlet を使って行います。まずそのための準備として Web Platform Installer からセットアップをしましょう。以下の 3 つをインストールします。

  • Microsoft Azure Powershell
  • Microsoft Azure Powershell (Standalone) (英語)
  • Microsoft Azure Cross-platform Command Line Tools (英語)

Setup Azure Powershell

セットアップが完了したら、スタートメニューから 'Microsoft Azure Powershell' を起動します。以下のような画面が出ていれば OK です。

Microsoft Azure Powershell

Cmdlet を使ってリソースを移動

1. アカウントの追加

まず、Azure Powershell にアカウントを読み込ませます。以下のコマンドを打ち込むとサインイン画面が表示されるので、Azure を利用する際に利用しているアカウントを入力します。

PS C:\> Add-AzureAccount

Sign-in

2. サブスクリプションの選択

次にアカウントに紐付いているサブスクリプションを選択します。登録されているサブスクリプションは以下のコマンドで確認できます。

PS C:\> Get-AzureSubscription

Get-AzureSubscription

選択すべきサブスクリプションの 'SubscriptionName' を確認し、以下のコマンドを打ち込みます。私の場合、サブスクリプション名には 'Microsoft MVP' を入力します。

PS C:\> Select-AzureSubscription -SubscriptionName '<サブスクリプション名>'

3. Azure のモジュールを切り替える

次に利用する Cmdlet が含まれているモジュールを変更します。Azure PowerShell には現在以下の 3 つのモジュールが含まれています。

モジュール 役割
Azure ストレージアカウント、Web サイト、データベース、仮想マシン、メディアサービスなど、個々のリソースを管理するための従来のコマンドレット群
AzureResourceManager 複雑なサービスのための Azure リソースを論理単位として作成、管理、配置するためのコマンドレット群
AzureProfile Add-AzureAccount、Get-AzureSubscription、Switch-AzureMode など、両方のモジュールに共通のコマンドレット群

今回はこのうち 'AzureResourceManager' を利用しますが、どうやら同じ PowerShell セッション中で Azure モジュールと Azure リソース管理モジュールは一緒に利用できないようです。そのため、以下のコマンドで切り替えを行います。詳細はドキュメントをご確認ください。

PS C:\> Switch-AzureMode -Name AzureResourceManager

4. リソースの移動

最後にリソースの移動を行います。以下のコマンドを実行すると、移動元のリソースグループにあるすべてのリソースを移動先のリソースグループに移します。

PS C:\> Get-AzureResource -ResourceGroupName '<移動元リソースグループ名>' | Move-AzureResource -DestinationResourceGroupName '<移動先リソースグループ名>'

まとめ

何度か試したのですが、完全にはすべてのリソースが移動しませんでした。移動に成功したりしなかったりで、挙動が掴み切れていません。未対応のリージョンなのか、それともただただ挙動が不安定なだけなのかは分かりませんが、信頼して使うにはまだ十分でないことは間違いなさそうです。

リソースのグループ間移動

とは言え、管理コンソールでは実現できない機能も CLI ではできることがあるので、(ちょっと敷居は高いけれど) 試してみる価値はありますね。CLI を利用せずとも、プレビューポータル上で実現できる日が来ると信じています。