Máquinas virtuales de una plantilla de Azure Resource ManagerVirtual machines in an Azure Resource Manager template

En este artículo se explican los aspectos de una plantilla de Azure Resource Manager que se aplican a las máquinas virtuales.This article describes aspects of an Azure Resource Manager template that apply to virtual machines. En este artículo no se describe una plantilla completa para crear una máquina virtual. Para ello, necesita definiciones de recursos de cuentas de almacenamiento, interfaces de red, direcciones IP públicas y redes virtuales.This article doesn’t describe a complete template for creating a virtual machine; for that you need resource definitions for storage accounts, network interfaces, public IP addresses, and virtual networks. Para obtener más información sobre cómo se pueden definir estos recursos juntos, consulte el tutorial de plantilla de Resource Manager.For more information about how these resources can be defined together, see the Resource Manager template walkthrough.

Hay muchas plantillas en la galería que incluyen el recurso de máquina virtual.There are many templates in the gallery that include the VM resource. No todos los elementos que pueden incorporarse en una plantilla se describen aquí.Not all elements that can be included in a template are described here.

En este ejemplo se muestra una sección de recursos típica de una plantilla para crear un número especificado de máquinas virtuales:This example shows a typical resource section of a template for creating a specified number of VMs:

"resources": [
  { 
    "apiVersion": "2016-04-30-preview", 
    "type": "Microsoft.Compute/virtualMachines", 
    "name": "[concat('myVM', copyindex())]", 
    "location": "[resourceGroup().location]",
    "copy": {
      "name": "virtualMachineLoop", 
      "count": "[parameters('numberOfInstances')]"
    },
    "dependsOn": [
      "[concat('Microsoft.Network/networkInterfaces/myNIC', copyindex())]" 
    ], 
    "properties": { 
      "hardwareProfile": { 
        "vmSize": "Standard_DS1" 
      }, 
      "osProfile": { 
        "computername": "[concat('myVM', copyindex())]", 
        "adminUsername": "[parameters('adminUsername')]", 
        "adminPassword": "[parameters('adminPassword')]" 
      }, 
      "storageProfile": { 
        "imageReference": { 
          "publisher": "MicrosoftWindowsServer", 
          "offer": "WindowsServer", 
          "sku": "2012-R2-Datacenter", 
          "version": "latest" 
        }, 
        "osDisk": { 
          "name": "[concat('myOSDisk', copyindex())]",
          "caching": "ReadWrite", 
          "createOption": "FromImage" 
        },
        "dataDisks": [
          {
            "name": "[concat('myDataDisk', copyindex())]",
            "diskSizeGB": "100",
            "lun": 0,
            "createOption": "Empty"
          }
        ] 
      }, 
      "networkProfile": { 
        "networkInterfaces": [ 
          { 
            "id": "[resourceId('Microsoft.Network/networkInterfaces',
              concat('myNIC', copyindex()))]" 
          } 
        ] 
      },
      "diagnosticsProfile": {
        "bootDiagnostics": {
          "enabled": "true",
          "storageUri": "[concat('https://', variables('storageName'), '.blob.core.windows.net')]"
        }
      } 
    },
    "resources": [ 
      { 
        "name": "Microsoft.Insights.VMDiagnosticsSettings", 
        "type": "extensions", 
        "location": "[resourceGroup().location]", 
        "apiVersion": "2016-03-30", 
        "dependsOn": [ 
          "[concat('Microsoft.Compute/virtualMachines/myVM', copyindex())]" 
        ], 
        "properties": { 
          "publisher": "Microsoft.Azure.Diagnostics", 
          "type": "IaaSDiagnostics", 
          "typeHandlerVersion": "1.5", 
          "autoUpgradeMinorVersion": true, 
          "settings": { 
            "xmlCfg": "[base64(concat(variables('wadcfgxstart'), 
            variables('wadmetricsresourceid'), 
            concat('myVM', copyindex()),
            variables('wadcfgxend')))]", 
            "storageAccount": "[variables('storageName')]" 
          }, 
          "protectedSettings": { 
            "storageAccountName": "[variables('storageName')]", 
            "storageAccountKey": "[listkeys(variables('accountid'), 
              '2015-06-15').key1]", 
            "storageAccountEndPoint": "https://core.windows.net" 
          } 
        } 
      },
      {
        "name": "MyCustomScriptExtension",
        "type": "extensions",
        "apiVersion": "2016-03-30",
        "location": "[resourceGroup().location]",
        "dependsOn": [
          "[concat('Microsoft.Compute/virtualMachines/myVM', copyindex())]"
        ],
        "properties": {
          "publisher": "Microsoft.Compute",
          "type": "CustomScriptExtension",
          "typeHandlerVersion": "1.7",
          "autoUpgradeMinorVersion": true,
          "settings": {
            "fileUris": [
              "[concat('https://', variables('storageName'),
                '.blob.core.windows.net/customscripts/start.ps1')]" 
            ],
            "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File start.ps1"
          }
        }
      } 
    ]
  } 
]

Nota

Se basa en una cuenta de almacenamiento que se ha creado previamente.This example relies on a storage account that was previously created. Puede crear la cuenta de almacenamiento implementando la plantilla.You could create the storage account by deploying it from the template. El ejemplo también se basa en una interfaz de red y sus recursos dependientes que se definirían en la plantilla.The example also relies on a network interface and its dependent resources that would be defined in the template. Estos recursos no se muestran en el ejemplo.These resources are not shown in the example.

Versión de la APIAPI Version

Cuando se implementan recursos mediante una plantilla, tendrá que especificar una versión de la API que se utilizará.When you deploy resources using a template, you have to specify a version of the API to use. En el ejemplo, se muestra el recurso de máquina virtual con este elemento apiVersion:The example shows the virtual machine resource using this apiVersion element:

"apiVersion": "2016-04-30-preview",

La versión de la API que especifica en la plantilla afecta a qué propiedades puede definir en la plantilla.The version of the API you specify in your template affects which properties you can define in the template. En general, seleccionaría la versión de la API más reciente al crear nuevas plantillas.In general, you should select the most recent API version when creating templates. Para las plantillas existentes, puede decidir si quiere continuar usando una versión anterior de la API o actualizar la plantilla para que la versión más reciente aproveche las nuevas características.For existing templates, you can decide whether you want to continue using an earlier API version, or update your template for the latest version to take advantage of new features.

Aproveche estas oportunidades para obtener las últimas versiones de API:Use these opportunities for getting the latest API versions:

Parámetros y variablesParameters and variables

Los parámetros facilitan la tarea de especificar valores para la plantilla cuando la ejecuta.Parameters make it easy for you to specify values for the template when you run it. Esta sección de parámetros se utiliza en el ejemplo:This parameters section is used in the example:

"parameters": {
  "adminUsername": { "type": "string" },
  "adminPassword": { "type": "securestring" },
  "numberOfInstances": { "type": "int" }
},

Al implementar la plantilla de ejemplo, escriba valores para el nombre y la contraseña de la cuenta de administrador de cada máquina virtual y el número de máquinas virtuales que creará.When you deploy the example template, you enter values for the name and password of the administrator account on each VM and the number of VMs to create. Tiene la opción de especificar valores de parámetro en un archivo independiente que se administra con la plantilla, o bien proporcionarlos se le solicite.You have the option of specifying parameter values in a separate file that's managed with the template, or providing values when prompted.

Las variables facilitan la tarea de establecer valores en la plantilla que se usan varias veces en ella o que cambian con el tiempo.Variables make it easy for you to set up values in the template that are used repeatedly throughout it or that can change over time. Esta sección de variables se utiliza en el ejemplo:This variables section is used in the example:

"variables": { 
  "storageName": "mystore1",
  "accountid": "[concat('/subscriptions/', subscription().subscriptionId, 
    '/resourceGroups/', resourceGroup().name,
  '/providers/','Microsoft.Storage/storageAccounts/', variables('storageName'))]", 
  "wadlogs": "<WadCfg> 
    <DiagnosticMonitorConfiguration overallQuotaInMB=\"4096\" xmlns=\"http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration\"> 
      <DiagnosticInfrastructureLogs scheduledTransferLogLevelFilter=\"Error\"/> 
      <WindowsEventLog scheduledTransferPeriod=\"PT1M\" > 
        <DataSource name=\"Application!*[System[(Level = 1 or Level = 2)]]\" /> 
        <DataSource name=\"Security!*[System[(Level = 1 or Level = 2)]]\" /> 
        <DataSource name=\"System!*[System[(Level = 1 or Level = 2)]]\" />
      </WindowsEventLog>", 
  "wadperfcounters": "<PerformanceCounters scheduledTransferPeriod=\"PT1M\">
      <PerformanceCounterConfiguration counterSpecifier=\"\\Process(_Total)\\Thread Count\" sampleRate=\"PT15S\" unit=\"Count\">
        <annotation displayName=\"Threads\" locale=\"en-us\"/>
      </PerformanceCounterConfiguration>
    </PerformanceCounters>", 
  "wadcfgxstart": "[concat(variables('wadlogs'), variables('wadperfcounters'), 
    '<Metrics resourceId=\"')]", 
  "wadmetricsresourceid": "[concat('/subscriptions/', subscription().subscriptionId, 
    '/resourceGroups/', resourceGroup().name , 
    '/providers/', 'Microsoft.Compute/virtualMachines/')]", 
  "wadcfgxend": "\"><MetricAggregation scheduledTransferPeriod=\"PT1H\"/>
    <MetricAggregation scheduledTransferPeriod=\"PT1M\"/>
    </Metrics></DiagnosticMonitorConfiguration>
    </WadCfg>"
}, 

Al implementar la plantilla de ejemplo, los valores de las variables se utilizan para el nombre y el identificador de la cuenta de almacenamiento creada anteriormente.When you deploy the example template, variable values are used for the name and identifier of the previously created storage account. También se usan variables para proporcionar los valores de la extensión de diagnóstico.Variables are also used to provide the settings for the diagnostic extension. Lea Procedimientos recomendados para crear plantillas de Azure Resource Manager para ayudarlo a decidir cómo desea estructurar los parámetros y variables de la plantilla.Use the best practices for creating Azure Resource Manager templates to help you decide how you want to structure the parameters and variables in your template.

bucles de recursosResource loops

Si necesita más de una máquina virtual para la aplicación, puede utilizar un elemento de copia en una plantilla.When you need more than one virtual machine for your application, you can use a copy element in a template. Este elemento opcional recorre en bucle la creación del número de máquinas virtuales que especificó como un parámetro:This optional element loops through creating the number of VMs that you specified as a parameter:

"copy": {
  "name": "virtualMachineLoop", 
  "count": "[parameters('numberOfInstances')]"
},

Además, tenga en cuenta en el ejemplo se utiliza el índice de bucle al especificar algunos de los valores para el recurso.Also, notice in the example that the loop index is used when specifying some of the values for the resource. Por ejemplo, si ha especificado un recuento de las tres instancias, los nombres de los discos del SO son "myOSDisk1", "myOSDisk2" y "myOSDisk3":For example, if you entered an instance count of three, the names of the operating system disks are myOSDisk1, myOSDisk2, and myOSDisk3:

"osDisk": { 
  "name": "[concat('myOSDisk', copyindex())]",
  "caching": "ReadWrite", 
  "createOption": "FromImage" 
}

Nota

Este ejemplo utiliza discos administrados para las máquinas virtuales.This example uses managed disks for the virtual machines.

Tenga en cuenta que la creación de un bucle para un recurso de la plantilla puede requerir que se utilice dicho bucle al crear otros recursos o acceder a ellos.Keep in mind that creating a loop for one resource in the template may require you to use the loop when creating or accessing other resources. Por ejemplo, varias máquinas virtuales no pueden usar la misma interfaz de red; por tanto, si recorre en bucle la creación de tres máquinas virtuales, también debe hacerlo con la generación de las tres interfaces de red.For example, multiple VMs can’t use the same network interface, so if your template loops through creating three VMs it must also loop through creating three network interfaces. Al asignar una interfaz de red a una máquina virtual, el índice de bucle se utiliza para identificarlo:When assigning a network interface to a VM, the loop index is used to identify it:

"networkInterfaces": [ { 
  "id": "[resourceId('Microsoft.Network/networkInterfaces',
    concat('myNIC', copyindex()))]" 
} ]

DependenciasDependencies

La mayoría de los recursos dependen de otros para que funcionen correctamente.Most resources depend on other resources to work correctly. Las máquinas virtuales deben estar asociadas con una red virtual y, para tal fin, necesita una interfaz de red.Virtual machines must be associated with a virtual network and to do that it needs a network interface. El elemento dependsOn se utiliza para asegurarse de que la interfaz de red está lista para usarse antes de que se creen las máquinas virtuales:The dependsOn element is used to make sure that the network interface is ready to be used before the VMs are created:

"dependsOn": [
  "[concat('Microsoft.Network/networkInterfaces/', 'myNIC', copyindex())]" 
],

Resource Manager implementa en paralelo todos los recursos que no dependan de otro que se vaya a implementar.Resource Manager deploys in parallel any resources that aren't dependent on another resource being deployed. Tenga cuidado al establecer las dependencias porque puede ralentizar accidentalmente el proceso si define algunas que sean innecesarias.Be careful when setting dependencies because you can inadvertently slow your deployment by specifying unnecessary dependencies. Pueden encadenar las dependencias a través de varios recursos.Dependencies can chain through multiple resources. Por ejemplo, la interfaz de red depende de la dirección IP pública y los recursos de red virtual.For example, the network interface depends on the public IP address and virtual network resources.

¿Cómo puede saber si se requiere una dependencia?How do you know if a dependency is required? Examine los valores establecidos en la plantilla.Look at the values you set in the template. Si un elemento de la definición de máquina virtual apunta a otro recurso que se implementa en la misma plantilla, necesita una dependencia.If an element in the virtual machine resource definition points to another resource that is deployed in the same template, you need a dependency. Por ejemplo, la máquina virtual de ejemplo define un perfil de red:For example, your example virtual machine defines a network profile:

"networkProfile": { 
  "networkInterfaces": [ { 
    "id": "[resourceId('Microsoft.Network/networkInterfaces',
      concat('myNIC', copyindex())]" 
  } ] 
},

Para establecer esta propiedad, debe existir la interfaz de red.To set this property, the network interface must exist. Por lo tanto, necesita una dependencia.Therefore, you need a dependency. También debe establecer una dependencia cuando se define un recurso (un elemento secundario) dentro de otro recurso (un elemento primario).You also need to set a dependency when one resource (a child) is defined within another resource (a parent). Por ejemplo, las extensiones de script personalizado y la configuración de diagnóstico se definen como recursos secundarios de la máquina virtual.For example, the diagnostic settings and custom script extensions are both defined as child resources of the virtual machine. No se creará hasta que la máquina virtual exista.They can't be created until the virtual machine exists. Por lo tanto, los recursos se marcan como dependientes de la máquina virtual.Therefore, both resources are marked as dependent on the virtual machine.

ProfilesProfiles

Al definir un recurso de máquina virtual, se utilizan varios elementos de perfil.Several profile elements are used when defining a virtual machine resource. Algunos son necesarios y otros, opcionales.Some are required and some are optional. Por ejemplo, los elementos hardwareProfile, osProfile, storageProfile y networkProfile son necesarios, pero diagnosticsProfile es opcional.For example, the hardwareProfile, osProfile, storageProfile, and networkProfile elements are required, but the diagnosticsProfile is optional. Estos perfiles definen opciones como:These profiles define settings such as:

Discos e imágenesDisks and images

En Azure, los archivos de VHD pueden representar discos o imágenes.In Azure, vhd files can represent disks or images. Cuando el sistema operativo de un archivo de VHD está especializado para ser una máquina virtual específica, se conoce como "disco".When the operating system in a vhd file is specialized to be a specific VM, it's referred to as a disk. Cuando el sistema operativo de un archivo de VHD está generalizado para crear muchas máquinas virtuales, se conoce como "imagen".When the operating system in a vhd file is generalized to be used to create many VMs, it's referred to as an image.

Creación de máquinas virtuales y discos a partir de una imagen de plataformaCreate new virtual machines and new disks from a platform image

Cuando se crea una máquina virtual, debe decidir qué sistema operativo usar.When you create a VM, you must decide what operating system to use. El elemento imageReference se utiliza para definir el sistema operativo de una nueva máquina virtual.The imageReference element is used to define the operating system of a new VM. En el ejemplo se muestra una definición de un sistema operativo Windows Server:The example shows a definition for a Windows Server operating system:

"imageReference": { 
  "publisher": "MicrosoftWindowsServer", 
  "offer": "WindowsServer", 
  "sku": "2012-R2-Datacenter", 
  "version": "latest" 
},

Si desea crear un sistema operativo Linux, puede usar esta definición:If you want to create a Linux operating system, you might use this definition:

"imageReference": {
  "publisher": "Canonical",
  "offer": "UbuntuServer",
  "sku": "14.04.2-LTS",
  "version": "latest"
},

Los valores de configuración del disco del SO se asignan con el elemento osDisk.Configuration settings for the operating system disk are assigned with the osDisk element. En el ejemplo se define un nuevo disco administrado con el modo de almacenamiento en caché establecido en ReadWrite y que se va a crear el disco de un imagen de plataforma:The example defines a new managed disk with the caching mode set to ReadWrite and that the disk is being created from a platform image:

"osDisk": { 
  "name": "[concat('myOSDisk', copyindex())]",
  "caching": "ReadWrite", 
  "createOption": "FromImage" 
},

Creación de máquinas virtuales a partir de discos administrados existentesCreate new virtual machines from existing managed disks

Si desea crear máquinas virtuales a partir de discos existentes, quite los elementos imageReference y osProfile, y defina esta configuración de disco:If you want to create virtual machines from existing disks, remove the imageReference and the osProfile elements and define these disk settings:

"osDisk": { 
  "osType": "Windows",
  "managedDisk": { 
    "id": "[resourceId('Microsoft.Compute/disks', [concat('myOSDisk', copyindex())])]" 
  }, 
  "caching": "ReadWrite",
  "createOption": "Attach" 
},

Creación de máquinas virtuales a partir de una imagen administradaCreate new virtual machines from a managed image

Si desea crear una máquina virtual a partir de una imagen personalizada, cambie el elemento imageReference y defina esta configuración de disco:If you want to create a virtual machine from a managed image, change the imageReference element and define these disk settings:

"storageProfile": { 
  "imageReference": {
    "id": "[resourceId('Microsoft.Compute/images', 'myImage')]"
  },
  "osDisk": { 
    "name": "[concat('myOSDisk', copyindex())]",
    "osType": "Windows",
    "caching": "ReadWrite", 
    "createOption": "FromImage" 
  }
},

Conexión de discos de datosAttach data disks

Si lo desea, puede agregar discos de datos a las máquinas virtuales.You can optionally add data disks to the VMs. El número de discos depende del tamaño del disco de sistema operativo que utilice.The number of disks depends on the size of operating system disk that you use. Con el tamaño de las máquinas virtuales establecido en Standard_DS1_v2, el número máximo de discos de datos que podría agregarse a es 2.With the size of the VMs set to Standard_DS1_v2, the maximum number of data disks that could be added to the them is two. En el ejemplo, se agrega un disco administrado a cada máquina virtual:In the example, one managed data disk is being added to each VM:

"dataDisks": [
  {
    "name": "[concat('myDataDisk', copyindex())]",
    "diskSizeGB": "100",
    "lun": 0, 
    "caching": "ReadWrite",
    "createOption": "Empty"
  }
],

ExtensionesExtensions

Aunque las extensiones son un recurso independiente, están estrechamente relacionadas con las máquinas virtuales.Although extensions are a separate resource, they're closely tied to VMs. Las extensiones pueden agregar como un recurso secundario de la máquina virtual o como uno independiente.Extensions can be added as a child resource of the VM or as a separate resource. El ejemplo muestra la extensión de diagnóstico que se agrega a las máquinas virtuales:The example shows the Diagnostics Extension being added to the VMs:

{ 
  "name": "Microsoft.Insights.VMDiagnosticsSettings", 
  "type": "extensions", 
  "location": "[resourceGroup().location]", 
  "apiVersion": "2016-03-30", 
  "dependsOn": [ 
    "[concat('Microsoft.Compute/virtualMachines/myVM', copyindex())]" 
  ], 
  "properties": { 
    "publisher": "Microsoft.Azure.Diagnostics", 
    "type": "IaaSDiagnostics", 
    "typeHandlerVersion": "1.5", 
    "autoUpgradeMinorVersion": true, 
    "settings": { 
      "xmlCfg": "[base64(concat(variables('wadcfgxstart'), 
      variables('wadmetricsresourceid'), 
      concat('myVM', copyindex()),
      variables('wadcfgxend')))]", 
      "storageAccount": "[variables('storageName')]" 
    }, 
    "protectedSettings": { 
      "storageAccountName": "[variables('storageName')]", 
      "storageAccountKey": "[listkeys(variables('accountid'), 
        '2015-06-15').key1]", 
      "storageAccountEndPoint": "https://core.windows.net" 
    } 
  } 
},

Este recurso de extensión usa la variable storageName y las variables de diagnóstico para proporcionar valores.This extension resource uses the storageName variable and the diagnostic variables to provide values. Si desea cambiar los datos recopilados mediante esta extensión, puede agregar más contadores de rendimiento a la variable wadperfcounters.If you want to change the data that is collected by this extension, you can add more performance counters to the wadperfcounters variable. También podría elegir poner los datos de diagnóstico en una cuenta de almacenamiento diferente a donde se almacenan los discos de máquina virtual.You could also choose to put the diagnostics data into a different storage account than where the VM disks are stored.

Existen muchas extensiones que se pueden instalar en una máquina virtual, pero la más útil es probablemente la de script personalizado.There are many extensions that you can install on a VM, but the most useful is probably the Custom Script Extension. En el ejemplo, un script de PowerShell denominado "start.ps1" se ejecuta en cada máquina virtual cuando se inicia por primera vez:In the example, a PowerShell script named start.ps1 runs on each VM when it first starts:

{
  "name": "MyCustomScriptExtension",
  "type": "extensions",
  "apiVersion": "2016-03-30",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/myVM', copyindex())]"
  ],
  "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.7",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "[concat('https://', variables('storageName'),
          '.blob.core.windows.net/customscripts/start.ps1')]" 
      ],
      "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File start.ps1"
    }
  }
}

El script start.ps1 puede realizar muchas tareas de configuración.The start.ps1 script can accomplish many configuration tasks. Por ejemplo, no se inicializan los discos de datos que se agregan a las máquinas virtuales en el ejemplo; puede usar un script personalizado para inicializarlos.For example, the data disks that are added to the VMs in the example aren't initialized; you can use a custom script to initialize them. Si tiene varias tareas de inicio para realizar, puede utilizar el archivo start.ps1 para llamar a otros scripts de PowerShell en Azure Storage.If you have multiple startup tasks to do, you can use the start.ps1 file to call other PowerShell scripts in Azure storage. En el ejemplo se usa PowerShell, pero puede usar cualquier método de scripting que esté disponible en el sistema operativo que esté utilizando.The example uses PowerShell, but you can use any scripting method that is available on the operating system that you're using.

Puede ver el estado de las extensiones instaladas en la configuración de extensiones del portal:You can see the status of the installed extensions from the Extensions settings in the portal:

Consulta del estado de la extensión

También puede obtener información de la extensión mediante el comando de PowerShell Get-AzVMExtension, el comando de la CLI de Azure vm extension get o la API REST Get extension information.You can also get extension information by using the Get-AzVMExtension PowerShell command, the vm extension get Azure CLI command, or the Get extension information REST API.

ImplementacionesDeployments

Cuando se implementa una plantilla, Azure realiza un seguimiento de los recursos implementados como un grupo y asigna automáticamente un nombre para este grupo implementado.When you deploy a template, Azure tracks the resources that you deployed as a group and automatically assigns a name to this deployed group. El nombre de la implementación es el mismo que el de la plantilla.The name of the deployment is the same as the name of the template.

Si le preocupa el estado de los recursos de la implementación, consulte el grupo de recursos de Azure Portal:If you're curious about the status of resources in the deployment, view the resource group in the Azure portal:

Obtención de la información de implementación

No pasa nada por usar la misma plantilla para crear o actualizar recursos existentes.It’s not a problem to use the same template to create resources or to update existing resources. Al usar comandos para implementar plantillas, tiene la oportunidad de indicar qué modo usar.When you use commands to deploy templates, you have the opportunity to say which mode you want to use. El modo se puede establecer en Completo o Incremental.The mode can be set to either Complete or Incremental. El valor predeterminado son actualizaciones incrementales.The default is to do incremental updates. Tenga precaución al utilizar el modo Completo porque se pueden eliminar accidentalmente los recursos.Be careful when using the Complete mode because you may accidentally delete resources. Cuando se establece el modo en Completo, Resource Manager elimina los recursos del grupo de recursos que no están en la plantilla.When you set the mode to Complete, Resource Manager deletes any resources in the resource group that aren't in the template.

Pasos siguientesNext Steps