Acquisire una VM Linux in esecuzione su AzureCapture a Linux virtual machine running on Azure

Seguire i passaggi descritti in questo articolo per generalizzare e acquisire la macchina virtuale Linux di Azure (VM) nel modello di distribuzione Azure Resource Manager.Follow the steps in this article to generalize and capture your Azure Linux virtual machine (VM) in the Resource Manager deployment model. Quando si generalizza la macchina virtuale, si rimuovono le informazioni sull'account personale e si prepara la macchina virtuale da usare come immagine.When you generalize the VM, you remove personal account information and prepare the VM to be used as an image. Si acquisisce quindi l'immagine di un disco rigido virtuale generalizzato (VHD) per il sistema operativo, i dischi rigidi virtuali per i dischi dati collegati, e un modello di Resource Manager per nuove distribuzioni di macchine virtuali.You then capture a generalized virtual hard disk (VHD) image for the OS, VHDs for attached data disks, and a Resource Manager template for new VM deployments. Questo articolo descrive come acquisire un'immagine di macchina virtuale con l'interfaccia della riga di comando di Azure 1.0 tramite i dischi non gestiti.This article details how to capture a VM image with the Azure CLI 1.0 for a VM using unmanaged disks. È anche possibile acquisire una macchina virtuale tramite Azure Managed Disks con l'interfaccia della riga di comando di Azure 2.0 .You can also capture a VM using Azure Managed Disks with the Azure CLI 2.0. La funzionalità Managed Disks viene gestita dalla piattaforma Azure e non richiede alcuna pianificazione o alcuna posizione per l'archiviazione.Managed disks are handled by the Azure platform and do not require any preparation or location to store them. Per altre informazioni, vedere Azure Managed Disks Overview (Panoramica di Azure Managed Disks).For more information, see Azure Managed Disks overview.

Per creare macchine virtuali usando l'immagine, configurare le risorse di rete per ogni nuova macchina virtuale e usare il modello (un file JavaScript Object Notation o JSON) per distribuirlo dalle immagini del disco rigido virtuale acquisite.To create VMs using the image, set up network resources for each new VM, and use the template (a JavaScript Object Notation, or JSON, file) to deploy it from the captured VHD images. In questo modo è possibile replicare una macchina virtuale con la configurazione corrente del software, simile al modo in cui si usano le immagini in Azure Marketplace.In this way, you can replicate a VM with its current software configuration, similar to the way you use images in the Azure Marketplace.

Suggerimento

Per creare una copia della VM Linux esistente con il relativo stato specializzato per il backup o il debug, vedere Creare una copia di una macchina virtuale Linux in esecuzione su Azure.If you want to create a copy of your existing Linux VM with its specialized state for backup or debugging, see Create a copy of a Linux virtual machine running on Azure. Per caricare un disco rigido virtuale Linux da una macchina virtuale locale, vedere Caricare e creare una VM Linux da un'immagine disco personalizzata.And if you want to upload a Linux VHD from an on-premises VM, see Upload and create a Linux VM from custom disk image.

Versioni dell'interfaccia della riga di comando per completare l'attivitàCLI versions to complete the task

È possibile completare l'attività usando una delle versioni seguenti dell'interfaccia della riga di comando:You can complete the task using one of the following CLI versions:

Prima di iniziareBefore you begin

Accertarsi che siano soddisfatti i prerequisiti seguenti:Ensure that you meet the following prerequisites:

Passaggio 1: Rimuovere l'agente Linux di AzureStep 1: Remove the Azure Linux agent

Eseguire innanzitutto il comando waagent con il parametro deprovision sulla VM Linux.First, run the waagent command with the deprovision parameter on the Linux VM. Questo comando elimina file e dati per preparare la VM per la generalizzazione.This command deletes files and data to make the VM ready for generalizing. Per informazioni dettagliate, vedere Guida dell'utente dell'agente Linux di Azure.For details, see the Azure Linux Agent user guide.

  1. Connettersi alla VM Linux tramite un client SSH.Connect to your Linux VM using an SSH client.
  2. Nella finestra SSH digitare il comando seguente:In the SSH window, type the following command:

    sudo waagent -deprovision+user
    

    Nota

    Eseguire questo comando solo su una VM che si intende acquisire come immagine.Only run this command on a VM that you intend to capture as an image. Ciò non garantisce che dall'immagine vengano cancellate tutte le informazioni sensibili o che l'immagine sia adatta per la ridistribuzione.It does not guarantee that the image is cleared of all sensitive information or is suitable for redistribution.

  3. Digitare y per continuare.Type y to continue. È possibile aggiungere il parametro -force per evitare questo passaggio di conferma.You can add the -force parameter to avoid this confirmation step.

  4. Dopo aver eseguito il comando, digitare exit.After the command completes, type exit. Questo passaggio chiude il client SSH.This step closes the SSH client.

Passaggio 2: Acquisire la macchina virtualeStep 2: Capture the VM

Usare l'interfaccia della riga di comando di Azure per generalizzare e acquisire la macchina virtuale.Use the Azure CLI to generalize and capture the VM. Nell'esempio seguente sostituire i nomi dei parametri di esempio con i valori desiderati.In the following examples, replace example parameter names with your own values. I nomi dei parametri di esempio includono myResourceGroup, myVnet e myVM.Example parameter names include myResourceGroup, myVnet, and myVM.

  1. Dal computer locale aprire l'interfaccia della riga di comando di Azure ed eseguire l'accesso alla sottoscrizione di Azure.From your local computer, open the Azure CLI and login to your Azure subscription.
  2. Verificare di essere in modalità Resource Manager.Make sure you are in Resource Manager mode.

    azure config mode arm
    
  3. Arrestare la VM di cui è già stato effettuato il deprovisioning usando il comando seguente:Shut down the VM that you already deprovisioned by using the following command:

    azure vm deallocate -g myResourceGroup -n myVM
    
  4. Generalizzare la VM con il comando seguente:Generalize the VM with the following command:

    azure vm generalize -g myResourceGroup -n myVM
    
  5. Eseguire ora il comando azure vm capture, che consente di acquisire la macchina virtuale.Now run the azure vm capture command, which captures the VM. Nell'esempio seguente i dischi rigidi virtuali dell'immagine vengono acquisiti con i nomi che iniziano con MyVHDNamePrefix e l'opzione -t specifica un percorso al modello MyTemplate.json.In the following example, the image VHDs are captured with names beginning with MyVHDNamePrefix, and the -t option specifies a path to the template MyTemplate.json.

    azure vm capture -g myResourceGroup -n myVM -p myVHDNamePrefix -t myTemplate.json
    

    Importante

    Per impostazione predefinita, il file VHD dell'immagine viene creato nello stesso account di archiviazione della VM originale usata.The image VHD files get created by default in the same storage account that the original VM used. Usare lo stesso account di archiviazione per archiviare i dischi rigidi virtuali delle nuove VM eventualmente create dall'immagine.Use the same storage account to store the VHDs for any new VMs you create from the image.

  6. Per trovare la posizione di un'immagine acquisita, aprire il modello JSON in un editor di testo.To find the location of a captured image, open the JSON template in a text editor. In storageProfile trovare l'URI dell'immagine ubicata nel contenitore system.In the storageProfile, find the uri of the image located in the system container. Ad esempio, l'URI dell'immagine del disco del sistema operativo è simile a https://xxxxxxxxxxxxxx.blob.core.windows.net/system/Microsoft.Compute/Images/vhds/MyVHDNamePrefix-osDisk.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.vhd.For example, the URI of the OS disk image is similar to https://xxxxxxxxxxxxxx.blob.core.windows.net/system/Microsoft.Compute/Images/vhds/MyVHDNamePrefix-osDisk.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.vhd

Passaggio 3: Distribuire una VM dall'immagine acquisitaStep 3: Create a VM from the captured image

Usare ora l'immagine con un modello per creare una VM Linux.Now use the image with a template to create a Linux VM. Questi passaggi mostrano come usare l'interfaccia della riga di comando di Azure e il modello di file JSON acquisito in precedenza per creare la VM in una nuova rete virtuale.These steps show you how to use the Azure CLI and the JSON file template you captured to create the VM in a new virtual network.

Creare risorse di reteCreate network resources

Per usare il modello, prima di tutto è necessario configurare una rete virtuale e una scheda di interfaccia di rete per la nuova VM.To use the template, you first need to set up a virtual network and NIC for your new VM. Per queste risorse si consiglia di creare un gruppo di risorse nel percorso in cui è archiviata l'immagine della VM.We recommend you create a resource group for these resources in the location where your VM image is stored. Eseguire comandi simili ai seguenti, sostituendo i nomi delle proprie risorse e una posizione di Azure appropriata ("centralus" in questi comandi):Run commands similar to the following, substituting names for your resources and an appropriate Azure location ("centralus" in these commands):

azure group create myResourceGroup1 -l "centralus"

azure network vnet create myResourceGroup1 myVnet -l "centralus"

azure network vnet subnet create myResourceGroup1 myVnet mySubnet

azure network public-ip create myResourceGroup1 myPublicIP -l "centralus"

azure network nic create myResourceGroup1 myNIC -k mySubnet -m myVnet -p myPublicIP -l "centralus"

Ottenere l'ID della scheda di interfaccia di reteGet the Id of the NIC

Per distribuire una VM dall'immagine usando il file JSON salvato durante l'acquisizione, è necessario l'ID della scheda di interfaccia di rete.To deploy a VM from the image by using the JSON you saved during capture, you need the Id of the NIC. Per ottenerlo, eseguire il comando seguente:Obtain it by running the following command:

azure network nic show myResourceGroup1 myNIC

L'ID dell'output è simile a /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup1/providers/Microsoft.Network/networkInterfaces/myNicThe Id in the output is similar to /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup1/providers/Microsoft.Network/networkInterfaces/myNic

Creare una macchina virtualeCreate a VM

Eseguire ora il comando seguente per creare la VM dall'immagine della VM acquisita.Now run the following command to create your VM from the captured VM image. Usare il parametro -f per specificare il percorso al file JSON del modello che è stato salvato.Use the -f parameter to specify the path to the template JSON file you saved.

azure group deployment create myResourceGroup1 MyDeployment -f MyTemplate.json

Nel comando di output viene chiesto di specificare un nuovo nome di VM, il nome e la password amministratore, e l'ID della scheda di interfaccia di rete creata in precedenza.In the command output, you are prompted to supply a new VM name, the admin user name and password, and the Id of the NIC you created previously.

info:    Executing command group deployment create
info:    Supply values for the following parameters
vmName: myNewVM
adminUserName: myAdminuser
adminPassword: ********
networkInterfaceId: /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resource Groups/myResourceGroup1/providers/Microsoft.Network/networkInterfaces/myNic

Se la distribuzione viene eseguita correttamente, vengono visualizzate le informazioni seguenti:The following sample shows what you see for a successful deployment:

+ Initializing template configurations and parameters
+ Creating a deployment
info:    Created template deployment xxxxxxx
+ Waiting for deployment to complete
data:    DeploymentName     : MyDeployment
data:    ResourceGroupName  : MyResourceGroup1
data:    ProvisioningState  : Succeeded
data:    Timestamp          : xxxxxxx
data:    Mode               : Incremental
data:    Name                Type          Value

data:    ------------------  ------------  -------------------------------------

data:    vmName              String        myNewVM

data:    vmSize              String        Standard_D1

data:    adminUserName       String        myAdminuser

data:    adminPassword       SecureString  undefined

data:    networkInterfaceId  String        /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup1/providers/Microsoft.Network/networkInterfaces/myNic
info:    group deployment create command OK

Verificare la distribuzioneVerify the deployment

Connettersi ora con SSH alla macchina virtuale creata per verificare la distribuzione e iniziare a usare la nuova VM.Now SSH to the virtual machine you created to verify the deployment and start using the new VM. Per connettersi con SSH, trovare l'indirizzo IP della VM creata eseguendo il comando seguente:To connect via SSH, find the IP address of the VM you created by running the following command:

azure network public-ip show myResourceGroup1 myPublicIP

L'indirizzo IP pubblico viene elencato nell'output del comando.The public IP address is listed in the command output. Per impostazione predefinita, ci si connette alla VM Linux con SSH sulla porta 22.By default you connect to the Linux VM by SSH on port 22.

Creare altre macchine virtualiCreate additional VMs

Usare l'immagine acquisita e il modello per distribuire altre VM seguendo i passaggi riportati nella sezione precedente.Use the captured image and template to deploy additional VMs using the steps in the preceding section. Altre opzioni per creare macchine virtuali dall'immagine includono l'uso di un modello di Guida introduttiva o l'esecuzione del comando azure vm create.Other options to create VMs from the image include using a quickstart template or running the azure vm create command.

Usare il modello acquisitoUse the captured template

Per usare il modello e l'immagine acquisiti, seguire questi passaggi (indicati nella sezione precedente):To use the captured image and template, follow these steps (detailed in the preceding section):

  • Assicurarsi che l'immagine della VM si trovi nello stesso account di archiviazione che ospita il disco rigido virtuale della VM.Ensure that your VM image is in the same storage account that hosts your VM's VHD.
  • Copiare il file JSON del modello e specificare un nome univoco per il disco del sistema operativo del disco rigido virtuale della nuova VM (o dei dischi rigidi virtuali).Copy the template JSON file and specify a unique name for the OS disk of the new VM's VHD (or VHDs). Ad esempio, in storageProfile, sotto vhd, in uri, specificare un nome univoco per il disco rigido virtuale osDisk, simile a https://xxxxxxxxxxxxxx.blob.core.windows.net/vhds/MyNewVHDNamePrefix-osDisk.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.vhdFor example, in the storageProfile, under vhd, in uri, specify a unique name for the osDisk VHD, similar to https://xxxxxxxxxxxxxx.blob.core.windows.net/vhds/MyNewVHDNamePrefix-osDisk.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.vhd
  • Creare una scheda di interfaccia di rete nella stessa rete virtuale o in una rete diversa.Create a NIC in either the same or a different virtual network.
  • Usando il file JSON del modello modificato, creare una distribuzione nel gruppo di risorse in cui è stata configurata la rete virtuale.Using the modified template JSON file, create a deployment in the resource group in which you set up the virtual network.

Uso di un modello di Guida introduttivaUse a quickstart template

Per configurare automaticamente la rete quando si crea una VM dall'immagine, è possibile specificare le risorse necessarie in un modello.If you want the network set up automatically when you create a VM from the image, you can specify those resources in a template. Ad esempio, vedere il modello 101-vm-from-user-image in GitHub.For example, see the 101-vm-from-user-image template from GitHub. Questo modello crea una VM dall'immagine personalizzata e la rete virtuale, l'indirizzo IP pubblico e le risorse NIC necessari.This template creates a VM from your custom image and the necessary virtual network, public IP address, and NIC resources. Per una procedura dettagliata sull'uso del modello nel portale di Azure, vedere la pagina che illustra Come creare una macchina virtuale da un'immagine personalizzata con un modello di Resource Manager.For a walkthrough of using the template in the Azure portal, see How to create a virtual machine from a custom image using a Resource Manager template.

Usare il comando azure vm createUse the azure vm create command

In genere, per creare una VM dall'immagine è più facile usare un modello di Resource Manager.Usually it's easiest to use a Resource Manager template to create a VM from the image. È però possibile creare la VM in modo imperativo usando il comando azure vm create con il parametro -Q (--image-urn).However, you can create the VM imperatively by using the azure vm create command with the -Q (--image-urn) parameter. Se si sceglie questo metodo, passare anche il parametro -d (--os-disk-vhd) per specificare il percorso del file con estensione VHD del sistema operativo per la nuova VM.If you use this method, you also pass the -d (--os-disk-vhd) parameter to specify the location of the OS .vhd file for the new VM. Questo file deve trovarsi nel contenitore dei VHD dell'account di archiviazione in cui è archiviato il file VHD dell'immagine.This file must be in the vhds container of the storage account where the image VHD file is stored. Il comando copia automaticamente il VHD per la nuova VM nel contenitore vhds.The command copies the VHD for the new VM automatically to the vhds container.

Prima di eseguire il comando azure vm create per l'immagine, completare la procedura seguente:Before running azure vm create with the image, complete the following steps:

  1. Creare un gruppo di risorse o identificarne uno esistente per la distribuzione.Create a resource group, or identify an existing resource group for the deployment.
  2. Creare una risorsa indirizzo IP pubblico e una risorsa NIC per la nuova VM.Create a public IP address resource and a NIC resource for the new VM. Per conoscere i passaggi per creare una rete virtuale, un indirizzo IP pubblico e una scheda di interfaccia di rete usando l'interfaccia della riga di comando, vedere più sopra in questo articolo.For steps to create a virtual network, public IP address, and NIC by using the CLI, see earlier in this article. azure vm create può anche creare una scheda di interfaccia di rete, ma è necessario passare i parametri aggiuntivi per una rete e una subnet virtuali.(azure vm create can also create a NIC, but you need to pass additional parameters for a virtual network and subnet.)

Eseguire quindi un comando che passa gli URI sia al nuovo file VHD del sistema operativo sia all'immagine esistente.Then run a command that passes URIs to both the new OS VHD file and the existing image. In questo esempio viene creata una VM di dimensioni Standard_A1 nell'area Stati Uniti orientali.In this example, a size Standard_A1 VM is created in the East US region.

azure vm create -g myResourceGroup1 -n myNewVM -l eastus -y Linux \
-z Standard_A1 -u myAdminname -p myPassword -f myNIC \
-d "https://xxxxxxxxxxxxxx.blob.core.windows.net/vhds/MyNewVHDNamePrefix.vhd" \
-Q "https://xxxxxxxxxxxxxx.blob.core.windows.net/system/Microsoft.Compute/Images/vhds/MyVHDNamePrefix-osDisk.vhd"

Per altre opzioni del comando, eseguire azure help vm create.For additional command options, run azure help vm create.

Passaggi successiviNext steps

Per gestire le VM con l'interfaccia della riga di comando, vedere le attività in Distribuire e gestire le macchine virtuali usando modelli di Gestione risorse di Azure e l'interfaccia della riga di comando di Azure.To manage your VMs with the CLI, see the tasks in Deploy and manage virtual machines by using Azure Resource Manager templates and the Azure CLI.