Linux 仮想マシンを一般化してキャプチャする方法

Azure にデプロイされて構成された仮想マシン (VM) を再利用するには、VM のイメージをキャプチャします。 このプロセスでは、イメージから新しい VM をデプロイする前に、個人アカウント情報を削除するために VM を一般化する必要もあります。 この記事では、Azure Managed Disks を使用して、Azure CLI 2.0 で VM に対して VM イメージをキャプチャする方法について詳しく説明します。 これらのディスクは Azure プラットフォームによって処理されるため、ディスクを格納するための準備も場所も必要ありません。 詳細については、「Azure Managed Disks の概要」をご覧ください。 この記事では、Azure CLI 2.0 を使用して Linux VM をキャプチャする方法を詳しく説明しています。 これらの手順は、Azure CLI 1.0 を使用して実行することもできます。

ヒント

バックアップまたはデバッグ用に設定した特別な状態の既存の Linux VM のコピーを作成したい場合は、「Azure で実行されている Linux 仮想マシンのコピーを作成する」をご覧ください。 また、オンプレミスの VM から Linux VHD をアップロードしたい場合は、「カスタム ディスク イメージをアップロードして Linux VM を作成する」をご覧ください。

開始する前に

次の前提条件が満たされていることを確認します。

最新の Azure CLI 2.0 がインストールされ、az login を使用して Azure アカウントにログインしている必要もあります。

クイック コマンド

タスクをすばやく実行する必要がある場合のために、次のセクションでは、Azure で Linux VM のイメージをキャプチャするための基本的なコマンドの詳細について説明します。 詳細な情報と各手順のコンテキストが、ドキュメントの残りの部分に記載されています。ここからお読みください。 次の例では、パラメーター名を独自の値を置き換えます。 myResourceGroupmyVMmyImage などは、例として使われているパラメーター名です。

  1. ソース VM のプロビジョニングを解除します。

     ssh ops@myvm.westus.cloudapp.azure.com
     sudo waagent -deprovision+user -force
     exit
    
  2. az vm deallocate で VM の割り当てを解除します。

     az vm deallocate --resource-group myResourceGroup --name myVM
    
  3. az vm generalize で VM を一般化します。

     az vm generalize --resource-group myResourceGroup --name myVM
    
  4. az image create で VM リソースからイメージを作成します。

     az image create --resource-group myResourceGroup --name myImage --source myVM
    
  5. az vm create でイメージ リソースから VM を作成します。

     az vm create --resource-group myResourceGroup --name myVMDeployed --image myImage
         --admin-username azureuser --ssh-key-value ~/.ssh/id_rsa.pub
    

詳細な手順

以降の手順では、既存の VM のプロビジョニングを解除し、VM リソースの割り当てを解除して一般化した後、イメージを作成します。 このイメージを使用して、サブスクリプション内の任意のリソース グループに VM を作成できます。 このプロセスでは、非管理対象ディスクよりも Azure Managed Disks を使用したほうが多くのメリットが得られます。 非管理対象ディスクを使用する場合は、基になる仮想ハード ディスク (VHD) の BLOB コピーを作成します。VM は、コピーした VHD BLOB と同じストレージ アカウントにしか作成できません。 管理ディスクを使用すると、イメージ リソースを作成して、サブスクリプション全体にデプロイできます。

手順 1: Azure Linux エージェントを削除する

VM を一般化する準備として、Azure VM エージェントを使用している VM のプロビジョニングを解除し、ファイルとデータを削除します。 対象の Linux VM で deprovision パラメーターを指定して waagent コマンドを実行します。 詳細については、「Azure Linux エージェント ユーザー ガイド」をご覧ください。

  1. SSH クライアントを使って Linux VM に接続します。
  2. SSH のウィンドウで、次のコマンドを入力します。

     sudo waagent -deprovision+user
    
    メモ

    このコマンドはイメージとしてキャプチャする VM に対して実行するだけとします。 これにより、イメージからすべての機密情報が削除されることや、イメージが再配布に適した状態になることが保証されるわけではありません。

  3. y 」と入力して続行します。 -force パラメーターを追加すると、この確認手順を省略できます。

  4. コマンドが完了した後、「exit」と入力します。 SSH クライアントが閉じられます。

手順 2: VM をキャプチャする

Azure CLI 2.0 を使って、VM を一般化してキャプチャします。 次の例では、パラメーター名を独自の値を置き換えます。 たとえば、myResourceGroupmyVnetmyVMといったパラメーター名にします。

  1. az vm deallocate で、プロビジョニングを解除した VM の割り当てを解除します。 次の例では、myResourceGroup という名前のリソース グループに含まれる myVM という名前の VM の割り当てを解除します。

     az vm deallocate --resource-group myResourceGroup --name myVM
    
  2. az vm generalize で VM を一般化します。 次の例では、myResourceGroup という名前のリソース グループに含まれる myVM という名前の VM を一般化します。

     az vm generalize --resource-group myResourceGroup --name myVM
    
  3. az image create で VM リソースのイメージを作成します。 次の例では、myVM という名前の VM リソースを使用して myResourceGroup という名前のリソース グループに含まれる myImage という名前のイメージを作成します。

     az image create --resource-group myResourceGroup --name myImage --source myVM
    
    メモ

    このイメージは、ソース VM と同じリソース グループに作成されます。 このイメージから、サブスクリプション内の任意のリソース グループに VM を作成できます。 管理の観点から、VM のリソースとイメージに専用のリソース グループを作成することをお勧めします。

手順 3: キャプチャしたイメージから VM を作成する

az vm create で、作成したイメージを使用して VM を作成します。 次の例では、myImage という名前のイメージから myVMDeployed という名前の VM を作成します。

az vm create --resource-group myResourceGroup --name myVMDeployed --image myImage
    --admin-username azureuser --ssh-key-value ~/.ssh/id_rsa.pub

管理ディスクを使用する場合は、サブスクリプション内の任意のリソース グループでイメージから VM を作成できます。 この点が、非管理対象ディスクとは異なります。非管理対象ディスクでは、VM をソース VHD と同じストレージ アカウントにしか作成できません。 イメージとは別のリソース グループに VM を作成するには、イメージに対する完全なリソース ID を指定します。 az image list を実行すると、イメージの一覧が表示されます。 出力は次の例のようになります。

"id": "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/images/myImage",
   "location": "westus",
   "name": "myImage",

次の例では、az vm create を実行し、イメージ リソース ID を指定してソース イメージとは別のリソース グループに VM を作成します。

az vm create --resource-group myOtherResourceGroup --name myOtherVMDeployed 
    --image "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/images/myImage"
    --admin-username azureuser --ssh-key-value ~/.ssh/id_rsa.pub

デプロイを検証する

ここで、作成した仮想マシンに SSH を使用して接続し、デプロイを検証し、新しい VM の使用を開始します。 SSH を介して接続するには、az vm show を実行して、VM の IP アドレスか FQDN を見つけます。

az vm show --resource-group myResourceGroup --name myVM --show-details

次のステップ

ソース VM イメージから複数の VM を作成できます。 イメージに変更を加える必要がある場合は、次の手順を実行します。

  • イメージから VM を作成します。
  • 必要な更新または構成の変更を行います。
  • 再度本記事の手順に従って、イメージのプロビジョニングの解除、割り当ての解除、一般化、作成を行います。
  • 今後のデプロイには、この新しいイメージを使用します。 必要に応じて、元のイメージを削除します。

CLI を使用して VM を管理する方法の詳細については、Azure CLI 2.0 に関するページをご覧ください。