Azure CLIを使ったリソース マネージャーのテンプレートとして使用する Linux 仮想マシンをキャプチャする方法
これをPowershellでいろいろ省きながらやってみます。
VMはすでにあるものとして仮定するため、作成の手順は割愛します。
VisualStudioでSDKを入れてる人はいらないはずです。何もない人は、Powershellのコマンドラインツールを入れてください。
まずはログインです。
PS > Login-AzureRmAccount
ここでダイアログが出てくるので、サブスクリプションのあるアカウントでログインします。大抵はMsアカウントのはずです。
複数のサブスクリプションを持ってる人は以下で、サブスクリプションを選択する必要があります。
Get-AzureRmSubscriptionを使って、サブスクリプションの一覧を取得
PS >Get-AzureRmSubscription
SubscriptionName : [サブスクリプション名]
SubscriptionId : 2aaa2a2a-9aa9-99a9-aaaa-aaaaaaaaaaaa
TenantId : 99999999-9999-9999-9999-1234567890123SubscriptionName : [サブスクリプション名]
SubscriptionId : 2aaa2a2a-9aa9-99a9-aaaa-aaaaaaaaaaaa
TenantId : 99999999-9999-9999-9999-1234567890123
サブスクリプションを以下で選択
PS > Set-AzureRmContext -SubscriptionName [サブスクリプション名]Environment : AzureCloud
Account : vnext-vnext@example.com
TenantId : 99999999-9999-9999-9999-1234567890123
SubscriptionId : 2aaa2a2a-9aa9-99a9-aaaa-aaaaaaaaaaaa
CurrentStorageAccount :
イメージを一般化(事前にVMは停止させておきましょう)
PS > Set-AzureRmVM -Generalized -Name [仮想マシン名] -ResourceGroupName [リソースグループ名]RequestId IsSuccessStatusCode StatusCode ReasonPhrase
——— ——————- ———- ————
99999999-9999-9999-9999-1234567890123 True OK OK
イメージをテンプレート化する
PS > Save-AzureRmVMImage -DestinationContainerName [Blobコンテナ名] -Name [仮想マシン名] -ResourceGroupName [リソースグループ名] -VHDNamePrefix [VHD名のプリフィクス]RequestId IsSuccessStatusCode StatusCode ReasonPhrase
——— ——————- ———- ————
True OK OK
ここで、VNET整備してますが、ポータルでもできることなので、ポータルでやってしまってもやってしまっていいような気がします。割愛。
Blobが増えてるので、JSONファイルをダウンロードしてクリップボードにコピー
Marketplaceからテンプレートのデプロイを検索
ダウンロードしたJSONを貼り付けます。
あとは、パラメータを設定、リソースグループを設定して、作成!
というざっくりな流れです!
networkInterfaceIdは「/subscriptions/[サブスクリプションID]/resourceGroups/backup-test/providers/Microsoft.Network/networkInterfaces/[ネットワークインターフェイス名]」という形式なのに注意しましょう。