Nociones sobre la estructura y la sintaxis de las plantillas de Azure Resource ManagerUnderstand the structure and syntax of Azure Resource Manager templates

En este artículo se describe la estructura de una plantilla de Azure Resource Manager.This article describes the structure of an Azure Resource Manager template. Presenta las distintas secciones de una plantilla y las propiedades que están disponibles en esas secciones.It presents the different sections of a template and the properties that are available in those sections. La plantilla consta de JSON y expresiones que puede usar para generar valores para su implementación.The template consists of JSON and expressions that you can use to construct values for your deployment.

En este artículo está destinado a usuarios que estén familiarizados con las plantillas de Resource Manager.This article is intended for users who have some familiarity with Resource Manager templates. Proporciona información detallada sobre la estructura y sintaxis de la plantilla.It provides detailed information about the structure and syntax of the template. Si desea una introducción a la creación de una plantilla, consulte crear la primera plantilla de Azure Resource Manager.If you want an introduction to creating a template, see Create your first Azure Resource Manager template.

Formato de plantillaTemplate format

En la estructura más simple, una plantilla tiene los siguientes elementos:In its simplest structure, a template has the following elements:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "",
  "apiProfile": "",
  "parameters": {  },
  "variables": {  },
  "functions": [  ],
  "resources": [  ],
  "outputs": {  }
}
Nombre del elementoElement name ObligatorioRequired DESCRIPCIÓNDescription
$schema$schema Yes Ubicación del archivo de esquema JSON que describe la versión del idioma de la plantilla.Location of the JSON schema file that describes the version of the template language.

Para las implementaciones de grupos de recursos, use: https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#.For resource group deployments, use: https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

Para las implementaciones de suscripciones, use: https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#.For subscription deployments, use: https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#
contentVersioncontentVersion Yes Versión de la plantilla (por ejemplo, 1.0.0.0).Version of the template (such as 1.0.0.0). Puede especificar cualquier valor para este elemento.You can provide any value for this element. Use este valor para documentar los cambios importantes de la plantilla.Use this value to document significant changes in your template. Al implementar los recursos con la plantilla, este valor se puede usar para asegurarse de que se está usando la plantilla correcta.When deploying resources using the template, this value can be used to make sure that the right template is being used.
apiProfileapiProfile Sin No Una versión de API que actúa como una colección de versiones de API para los tipos de recursos.An API version that serves as a collection of API versions for resource types. Use este valor para evitar tener que especificar las versiones de API para cada recurso en la plantilla.Use this value to avoid having to specify API versions for each resource in the template. Al especificar una versión de perfil de API y no se especifica una versión de API para el tipo de recurso, Resource Manager usa la versión de API para ese tipo de recurso que se define en el perfil.When you specify an API profile version and don't specify an API version for the resource type, Resource Manager uses the API version for that resource type that is defined in the profile.

La propiedad de perfil de API es especialmente útil al implementar una plantilla en diferentes entornos, como Azure Stack y Azure global.The API profile property is especially helpful when deploying a template to different environments, such as Azure Stack and global Azure. Use la versión del perfil de API para asegurarse de que la plantilla utiliza automáticamente las versiones que se admiten en ambos entornos.Use the API profile version to make sure your template automatically uses versions that are supported in both environments. Para obtener una lista de las versiones actuales de perfil de API y los recursos definidos en el perfil de versiones de API, consulte API perfil.For a list of the current API profile versions and the resources API versions defined in the profile, see API Profile.

Para obtener más información, consulte realizar un seguimiento de versiones mediante perfiles de la API.For more information, see Track versions using API profiles.
parametersparameters Sin No Valores que se proporcionan cuando se ejecuta la implementación para personalizar la implementación de recursos.Values that are provided when deployment is executed to customize resource deployment.
variablesvariables Sin No Valores que se usan como fragmentos JSON en la plantilla para simplificar expresiones de idioma de la plantilla.Values that are used as JSON fragments in the template to simplify template language expressions.
functionsfunctions Sin No Funciones definidas por el usuario que están disponibles dentro de la plantilla.User-defined functions that are available within the template.
resourcesresources Yes Tipos de servicios que se implementan o actualizan en un grupo de recursos o suscripción.Resource types that are deployed or updated in a resource group or subscription.
outputsoutputs Sin No Valores que se devuelven después de la implementación.Values that are returned after deployment.

Cada elemento tiene propiedades que puede configurar.Each element has properties you can set. En este artículo se describen las secciones de la plantilla con más detalle.This article describes the sections of the template in greater detail.

SintaxisSyntax

La sintaxis básica de la plantilla es JSON.The basic syntax of the template is JSON. Sin embargo, puede usar expresiones para ampliar los valores JSON disponibles dentro de la plantilla.However, you can use expressions to extend the JSON values available within the template. Las expresiones empezar y terminar por corchetes: [ y ], respectivamente.Expressions start and end with brackets: [ and ], respectively. El valor de la expresión se evalúa cuando se implementa la plantilla.The value of the expression is evaluated when the template is deployed. Una expresión puede devolver una cadena, entero, booleano, matriz u objeto.An expression can return a string, integer, boolean, array, or object. El ejemplo siguiente muestra una expresión en el valor predeterminado de un parámetro:The following example shows an expression in the default value of a parameter:

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
},

Dentro de la expresión, la sintaxis resourceGroup() llama a una de las funciones que proporciona el Administrador de recursos para su uso dentro de una plantilla.Within the expression, the syntax resourceGroup() calls one of the functions that Resource Manager provides for use within a template. Al igual que en JavaScript, las llamadas de función tienen el formato functionName(arg1,arg2,arg3).Just like in JavaScript, function calls are formatted as functionName(arg1,arg2,arg3). La sintaxis .location recupera una propiedad del objeto devuelto por la función.The syntax .location retrieves one property from the object returned by that function.

Las funciones de plantilla y sus parámetros no distinguen mayúsculas de minúsculas.Template functions and their parameters are case-insensitive. Por ejemplo, Resource Manager resuelve variables('var1') y VARIABLES('VAR1') de la misma manera.For example, Resource Manager resolves variables('var1') and VARIABLES('VAR1') as the same. Cuando se evalúa, a menos que la función modifique expresamente las mayúsculas (como toUpper o toLower), la función conserva las mayúsculas.When evaluated, unless the function expressly modifies case (such as toUpper or toLower), the function preserves the case. Es posible que determinados tipos de recursos tengan requisitos de mayúsculas independientemente de cómo se evalúen las funciones.Certain resource types may have case requirements irrespective of how functions are evaluated.

Para que una cadena literal empiece con un corchete [, pero no se interprete como una expresión, agregue otro corchete para que la cadena comience con [[.To have a literal string start with a bracket [, but not have it interpreted as an expression, add an extra bracket to start the string with [[.

Para pasar un valor de cadena como un parámetro a una función, use comillas simples.To pass a string value as a parameter to a function, use single quotes.

"name": "[concat('storage', uniqueString(resourceGroup().id))]"

Para salir de las comillas dobles en una expresión, como la adición de un objeto JSON en la plantilla, use la barra diagonal inversa.To escape double quotes in an expression, such as adding a JSON object in the template, use the backslash.

"tags": {
    "CostCenter": "{\"Dept\":\"Finance\",\"Environment\":\"Production\"}"
},

Una expresión de plantilla no puede superar los 24 576 caracteres.A template expression can't exceed 24,576 characters.

Para obtener la lista completa de las funciones de plantilla, consulte Funciones de la plantilla del Administrador de recursos de Azure.For the full list of template functions, see Azure Resource Manager template functions.

ParámetrosParameters

En la sección de parámetros de la plantilla, especifique los valores que el usuario puede introducir al implementar los recursos.In the parameters section of the template, you specify which values you can input when deploying the resources. Estos valores de parámetros permiten personalizar la implementación al proporcionar valores que son específicos para un entorno concreto (por ejemplo, desarrollo, prueba y producción).These parameter values enable you to customize the deployment by providing values that are tailored for a particular environment (such as dev, test, and production). No tiene que especificar parámetros en la plantilla, pero sin parámetros la plantilla implementaría siempre los mismos recursos con los mismos nombres, ubicaciones y propiedades.You don't have to provide parameters in your template, but without parameters your template would always deploy the same resources with the same names, locations, and properties.

Está limitado a 256 parámetros en una plantilla.You're limited to 256 parameters in a template. Puede reducir el número de parámetros mediante el uso de objetos que contienen varias propiedades, tal como se muestra en este artículo.You can reduce the number of parameters by using objects that contain multiple properties, as shown in this article.

Propiedades disponiblesAvailable properties

Las propiedades disponibles para un parámetro son:The available properties for a parameter are:

"parameters": {
  "<parameter-name>" : {
    "type" : "<type-of-parameter-value>",
    "defaultValue": "<default-value-of-parameter>",
    "allowedValues": [ "<array-of-allowed-values>" ],
    "minValue": <minimum-value-for-int>,
    "maxValue": <maximum-value-for-int>,
    "minLength": <minimum-length-for-string-or-array>,
    "maxLength": <maximum-length-for-string-or-array-parameters>,
    "metadata": {
      "description": "<description-of-the parameter>" 
    }
  }
}
Nombre del elementoElement name ObligatorioRequired DESCRIPCIÓNDescription
parameterNameparameterName Yes Nombre del parámetro.Name of the parameter. Debe ser un identificador válido de JavaScript.Must be a valid JavaScript identifier.
Tipotype Yes Tipo del valor del parámetro.Type of the parameter value. Los tipos y valores permitidos son string, secureString, int, bool, objet, secureObject y array.The allowed types and values are string, securestring, int, bool, object, secureObject, and array.
defaultValuedefaultValue Sin No Valor predeterminado del parámetro, si no se proporciona ningún valor.Default value for the parameter, if no value is provided for the parameter.
allowedValuesallowedValues Sin No Matriz de valores permitidos para el parámetro para asegurarse de que se proporciona el valor correcto.Array of allowed values for the parameter to make sure that the right value is provided.
minValueminValue Sin No El valor mínimo de parámetros de tipo int, este valor es inclusivo.The minimum value for int type parameters, this value is inclusive.
maxValuemaxValue Sin No El valor máximo de parámetros de tipo int, este valor es inclusivo.The maximum value for int type parameters, this value is inclusive.
minLengthminLength Sin No Longitud mínima de los parámetros de tipo cadena, cadena segura y matriz; este valor es inclusivo.The minimum length for string, secure string, and array type parameters, this value is inclusive.
maxLengthmaxLength Sin No Longitud máxima de los parámetros de tipo cadena, cadena segura y matriz; este valor es inclusivo.The maximum length for string, secure string, and array type parameters, this value is inclusive.
descriptiondescription Sin No Descripción del parámetro que se muestra a los usuarios a través del portal.Description of the parameter that is displayed to users through the portal. Para más información, consulte Comentarios en plantillas.For more information, see Comments in templates.

Definición y uso de un parámetroDefine and use a parameter

En el ejemplo siguiente se muestra una definición simple de parámetro.The following example shows a simple parameter definition. Se define el nombre del parámetro y se especifica que toma un valor de cadena.It defines the name of the parameter, and specifies that it takes a string value. El parámetro solo acepta valores que tienen sentido para el uso previsto.The parameter only accepts values that make sense for its intended use. Cuando no se proporciona ningún valor durante la implementación, se especifica un valor predeterminado.It specifies a default value when no value is provided during deployment. Por último, el parámetro incluye una descripción de su uso.Finally, the parameter includes a description of its use.

"parameters": {
  "storageSKU": {
    "type": "string",
    "allowedValues": [
      "Standard_LRS",
      "Standard_ZRS",
      "Standard_GRS",
      "Standard_RAGRS",
      "Premium_LRS"
    ],
    "defaultValue": "Standard_LRS",
    "metadata": {
      "description": "The type of replication to use for the storage account."
    }
  }   
}

En la plantilla,debe hacer referencia al valor del parámetro con la sintaxis siguiente:In the template, you reference the value for the parameter with the following syntax:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "sku": {
      "name": "[parameters('storageSKU')]"
    },
    ...
  }
]

Funciones de plantilla con parámetrosTemplate functions with parameters

Cuando se especifica el valor predeterminado de un parámetro, puede usar la mayoría de las funciones de plantilla.When specifying the default value for a parameter, you can use most template functions. Puede usar otro valor de parámetro para compilar un valor predeterminado.You can use another parameter value to build a default value. La plantilla siguiente muestra el uso de funciones en el valor predeterminado:The following template demonstrates the use of functions in the default value:

"parameters": {
  "siteName": {
    "type": "string",
    "defaultValue": "[concat('site', uniqueString(resourceGroup().id))]",
    "metadata": {
      "description": "The site name. To use the default value, do not specify a new value."
    }
  },
  "hostingPlanName": {
    "type": "string",
    "defaultValue": "[concat(parameters('siteName'),'-plan')]",
    "metadata": {
      "description": "The host name. To use the default value, do not specify a new value."
    }
  }
}

No puede usar la función reference en la sección de parámetros.You can't use the reference function in the parameters section. Los parámetros se evalúan antes de la implementación, por lo que la función reference no puede obtener el estado de tiempo de ejecución de un recurso.Parameters are evaluated before deployment so the reference function can't get the runtime state of a resource.

Objetos como parámetrosObjects as parameters

Puede ser más fácil organizar los valores relacionados pasándolos como objetos.It can be easier to organize related values by passing them in as an object. Con este enfoque también se reduce el número de parámetros de la plantilla.This approach also reduces the number of parameters in the template.

Defina el parámetro en la plantilla y especifique un objeto JSON en lugar de un valor único durante la implementación.Define the parameter in your template and specify a JSON object instead of a single value during deployment.

"parameters": {
  "VNetSettings": {
    "type": "object",
    "defaultValue": {
      "name": "VNet1",
      "location": "eastus",
      "addressPrefixes": [
        {
          "name": "firstPrefix",
          "addressPrefix": "10.0.0.0/22"
        }
      ],
      "subnets": [
        {
          "name": "firstSubnet",
          "addressPrefix": "10.0.0.0/24"
        },
        {
          "name": "secondSubnet",
          "addressPrefix": "10.0.1.0/24"
        }
      ]
    }
  }
},

Después, haga referencia a las subpropiedades del parámetro con el operador punto.Then, reference the subproperties of the parameter by using the dot operator.

"resources": [
  {
    "apiVersion": "2015-06-15",
    "type": "Microsoft.Network/virtualNetworks",
    "name": "[parameters('VNetSettings').name]",
    "location": "[parameters('VNetSettings').location]",
    "properties": {
      "addressSpace":{
        "addressPrefixes": [
          "[parameters('VNetSettings').addressPrefixes[0].addressPrefix]"
        ]
      },
      "subnets":[
        {
          "name":"[parameters('VNetSettings').subnets[0].name]",
          "properties": {
            "addressPrefix": "[parameters('VNetSettings').subnets[0].addressPrefix]"
          }
        },
        {
          "name":"[parameters('VNetSettings').subnets[1].name]",
          "properties": {
            "addressPrefix": "[parameters('VNetSettings').subnets[1].addressPrefix]"
          }
        }
      ]
    }
  }
]

Plantillas de ejemplo de parámetroParameter example templates

Estas plantillas de ejemplo muestran algunos escenarios para usar los parámetros.These example templates demonstrate some scenarios for using parameters. Impleméntelos para probar cómo se controlan los parámetros en diferentes escenarios.Deploy them to test how parameters are handled in different scenarios.

PlantillaTemplate DESCRIPCIÓNDescription
parámetros con funciones para los valores predeterminadosparameters with functions for default values Muestra cómo utilizar las funciones de plantilla al definir valores predeterminados para parámetros.Demonstrates how to use template functions when defining default values for parameters. La plantilla no implementa ningún recurso.The template doesn't deploy any resources. Genera valores de parámetro y devuelve dichos valores.It constructs parameter values and returns those values.
objeto de parámetroparameter object Muestra cómo utilizar un objeto para un parámetro.Demonstrates using an object for a parameter. La plantilla no implementa ningún recurso.The template doesn't deploy any resources. Genera valores de parámetro y devuelve dichos valores.It constructs parameter values and returns those values.

variablesVariables

En la sección de variables, se crean valores que pueden usarse en toda la plantilla.In the variables section, you construct values that can be used throughout your template. No es necesario definir las variables, pero a menudo simplifican la plantilla reduciendo expresiones complejas.You don't need to define variables, but they often simplify your template by reducing complex expressions.

Definiciones disponiblesAvailable definitions

El ejemplo siguiente muestra las opciones disponibles para definir una variable:The following example shows the available options for defining a variable:

"variables": {
  "<variable-name>": "<variable-value>",
  "<variable-name>": { 
    <variable-complex-type-value> 
  },
  "<variable-object-name>": {
    "copy": [
      {
        "name": "<name-of-array-property>",
        "count": <number-of-iterations>,
        "input": <object-or-value-to-repeat>
      }
    ]
  },
  "copy": [
    {
      "name": "<variable-array-name>",
      "count": <number-of-iterations>,
      "input": <object-or-value-to-repeat>
    }
  ]
}

Para obtener información sobre el uso de copy para crear varios valores para una variable, consulte iteración Variable.For information about using copy to create several values for a variable, see Variable iteration.

Definición y uso de una variableDefine and use a variable

El ejemplo siguiente muestra una variable de definición.The following example shows a variable definition. Crea un valor de cadena para un nombre de cuenta de almacenamiento.It creates a string value for a storage account name. Se usan varias funciones de plantilla para obtener un valor de parámetro y se concatena a una cadena única.It uses several template functions to get a parameter value, and concatenates it to a unique string.

"variables": {
  "storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},

Use la variable al definir el recurso.You use the variable when defining the resource.

"resources": [
  {
    "name": "[variables('storageName')]",
    "type": "Microsoft.Storage/storageAccounts",
    ...

Variables de configuraciónConfiguration variables

Puede usar tipos complejos de JSON para definir los valores relacionados con un entorno.You can use complex JSON types to define related values for an environment.

"variables": {
  "environmentSettings": {
    "test": {
      "instanceSize": "Small",
      "instanceCount": 1
    },
    "prod": {
      "instanceSize": "Large",
      "instanceCount": 4
    }
  }
},

En parámetros, se crea un valor que indica que valores de configuración usar.In parameters, you create a value that indicates which configuration values to use.

"parameters": {
  "environmentName": {
    "type": "string",
    "allowedValues": [
      "test",
      "prod"
    ]
  }
},

Puede recuperar la configuración actual con:You retrieve the current settings with:

"[variables('environmentSettings')[parameters('environmentName')].instanceSize]"

Plantillas de ejemplo de variableVariable example templates

Estas plantillas de ejemplo muestran algunos escenarios para usar las variables.These example templates demonstrate some scenarios for using variables. Impleméntelos para probar cómo se controlan las variables en diferentes escenarios.Deploy them to test how variables are handled in different scenarios.

PlantillaTemplate DESCRIPCIÓNDescription
definiciones de variablevariable definitions Muestra los diferentes tipos de variables.Demonstrates the different types of variables. La plantilla no implementa ningún recurso.The template doesn't deploy any resources. Genera valores de variable y devuelve esos valores.It constructs variable values and returns those values.
variable de configuraciónconfiguration variable Muestra el uso de una variable que define los valores de configuración.Demonstrates the use of a variable that defines configuration values. La plantilla no implementa ningún recurso.The template doesn't deploy any resources. Genera valores de variable y devuelve esos valores.It constructs variable values and returns those values.
reglas de seguridad de red y archivo de parámetronetwork security rules and parameter file Genera una matriz en el formato correcto para asignar las reglas de seguridad a un grupo de seguridad de red.Constructs an array in the correct format for assigning security rules to a network security group.

FunctionsFunctions

Dentro de la plantilla, puede crear sus propias funciones.Within your template, you can create your own functions. Estas funciones están disponibles para su uso en la plantilla.These functions are available for use in your template. Normalmente, definirá una expresión compleja que no desea repetir en toda la plantilla.Typically, you define complicated expression that you don't want to repeat throughout your template. Creará las funciones definidas por el usuario a partir de las expresiones y funciones que se admiten en las plantillas.You create the user-defined functions from expressions and functions that are supported in templates.

Al definir una función de usuario, hay algunas restricciones:When defining a user function, there are some restrictions:

  • La función no puede acceder a las variables.The function can't access variables.
  • La función solo puede usar los parámetros que se definen en la función.The function can only use parameters that are defined in the function. Cuando se usa el función parámetros dentro de una función definida por el usuario, están restringidas a los parámetros para esa función.When you use the parameters function within a user-defined function, you're restricted to the parameters for that function.
  • La función no puede llamar a otras funciones definidas por el usuario.The function can't call other user-defined functions.
  • La función no puede usar la función de referencia.The function can't use the reference function.
  • Los parámetros de la función no pueden tener valores predeterminados.Parameters for the function can't have default values.

Las funciones requieren un valor de espacio de nombres para evitar conflictos de nomenclatura con las funciones de plantilla.Your functions require a namespace value to avoid naming conflicts with template functions. En el ejemplo siguiente se muestra una función que devuelve un nombre de cuenta de almacenamiento:The following example shows a function that returns a storage account name:

"functions": [
  {
    "namespace": "contoso",
    "members": {
      "uniqueName": {
        "parameters": [
          {
            "name": "namePrefix",
            "type": "string"
          }
        ],
        "output": {
          "type": "string",
          "value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
        }
      }
    }
  }
],

Se llama a la función con:You call the function with:

"resources": [
  {
    "name": "[contoso.uniqueName(parameters('storageNamePrefix'))]",
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2016-01-01",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "Storage",
    "location": "South Central US",
    "tags": {},
    "properties": {}
  }
]

RecursosResources

En la sección de recursos, se define que los recursos se implementan o se actualizan.In the resources section, you define the resources that are deployed or updated.

Propiedades disponiblesAvailable properties

Defina recursos con la siguiente estructura:You define resources with the following structure:

"resources": [
  {
      "condition": "<true-to-deploy-this-resource>",
      "apiVersion": "<api-version-of-resource>",
      "type": "<resource-provider-namespace/resource-type-name>",
      "name": "<name-of-the-resource>",
      "location": "<location-of-resource>",
      "tags": {
          "<tag-name1>": "<tag-value1>",
          "<tag-name2>": "<tag-value2>"
      },
      "comments": "<your-reference-notes>",
      "copy": {
          "name": "<name-of-copy-loop>",
          "count": <number-of-iterations>,
          "mode": "<serial-or-parallel>",
          "batchSize": <number-to-deploy-serially>
      },
      "dependsOn": [
          "<array-of-related-resource-names>"
      ],
      "properties": {
          "<settings-for-the-resource>",
          "copy": [
              {
                  "name": ,
                  "count": ,
                  "input": {}
              }
          ]
      },
      "sku": {
          "name": "<sku-name>",
          "tier": "<sku-tier>",
          "size": "<sku-size>",
          "family": "<sku-family>",
          "capacity": <sku-capacity>
      },
      "kind": "<type-of-resource>",
      "plan": {
          "name": "<plan-name>",
          "promotionCode": "<plan-promotion-code>",
          "publisher": "<plan-publisher>",
          "product": "<plan-product>",
          "version": "<plan-version>"
      },
      "resources": [
          "<array-of-child-resources>"
      ]
  }
]
Nombre del elementoElement name ObligatorioRequired DESCRIPCIÓNDescription
conditioncondition Sin No Valor booleano que indica si el recurso se aprovisionará durante esta implementación.Boolean value that indicates whether the resource will be provisioned during this deployment. Si es true, el recurso se crea durante la implementación.When true, the resource is created during deployment. Si es false, el recurso se omite para esta implementación.When false, the resource is skipped for this deployment. Consulte condición.See condition.
apiVersionapiVersion Yes Versión de la API de REST que debe usar para crear el recurso.Version of the REST API to use for creating the resource. Para determinar los valores disponibles, vea referencia de plantilla.To determine available values, see template reference.
Tipotype Yes Tipo de recurso.Type of the resource. Este valor es una combinación del espacio de nombres del proveedor de recursos y el tipo de recurso (como Microsoft.Storage/storageAccounts).This value is a combination of the namespace of the resource provider and the resource type (such as Microsoft.Storage/storageAccounts). Para determinar los valores disponibles, vea referencia de plantilla.To determine available values, see template reference.
Nombrename Yes Nombre del recurso.Name of the resource. El nombre debe cumplir las restricciones de componente URI definidas en RFC3986.The name must follow URI component restrictions defined in RFC3986. Además, los servicios de Azure que exponen el nombre del recurso a partes externas validan el nombre para asegurarse de que no es un intento de suplantar otra identidad.In addition, Azure services that expose the resource name to outside parties validate the name to make sure it isn't an attempt to spoof another identity.
locationlocation VaríaVaries Ubicaciones geográficas compatibles del recurso proporcionado.Supported geo-locations of the provided resource. Puede seleccionar cualquiera de las ubicaciones disponibles, pero normalmente tiene sentido elegir aquella que esté más cerca de los usuarios.You can select any of the available locations, but typically it makes sense to pick one that is close to your users. Normalmente, también tiene sentido colocar los recursos que interactúan entre sí en la misma región.Usually, it also makes sense to place resources that interact with each other in the same region. La mayoría de los tipos de recursos requieren una ubicación, pero algunos (por ejemplo, una asignación de roles) no la necesitan.Most resource types require a location, but some types (such as a role assignment) don't require a location.
etiquetastags Sin No Etiquetas asociadas al recurso.Tags that are associated with the resource. Aplique etiquetas para organizar de forma lógica los recursos en su suscripción.Apply tags to logically organize resources across your subscription.
comentarioscomments Sin No Notas para documentar los recursos de la plantilla.Your notes for documenting the resources in your template. Para más información, consulte Comentarios en plantillas.For more information, see Comments in templates.
copiacopy Sin No Si se necesita más de una instancia, el número de recursos que se crearán.If more than one instance is needed, the number of resources to create. El modo predeterminado es paralelo.The default mode is parallel. Si no desea que todos los recursos se implementen al mismo tiempo, especifique el modo serie.Specify serial mode when you don't want all or the resources to deploy at the same time. Para obtener más información, consulte Creación de varias instancias de recursos en Azure Resource Manager.For more information, see Create several instances of resources in Azure Resource Manager.
dependsOndependsOn Sin No Recursos que se deben implementar antes de implementar este.Resources that must be deployed before this resource is deployed. Resource Manager evalúa las dependencias entre recursos y los implementa en su orden correcto.Resource Manager evaluates the dependencies between resources and deploys them in the correct order. Cuando no hay recursos dependientes entre sí, se implementan en paralelo.When resources aren't dependent on each other, they're deployed in parallel. El valor puede ser una lista separada por comas de nombres de recursos o identificadores de recursos únicos.The value can be a comma-separated list of a resource names or resource unique identifiers. Solo los recursos de lista que se implementan en esta plantilla.Only list resources that are deployed in this template. Deben existir los recursos que no estén definidos en esta plantilla.Resources that aren't defined in this template must already exist. Evite agregar dependencias innecesarias, ya que pueden ralentizar la implementación y crear dependencias circulares.Avoid adding unnecessary dependencies as they can slow your deployment and create circular dependencies. Para obtener instrucciones sobre la configuración de dependencias, consulte Definición de dependencias en plantillas de Azure Resource Manager.For guidance on setting dependencies, see Defining dependencies in Azure Resource Manager templates.
propiedadesproperties Sin No Opciones de configuración específicas de recursos.Resource-specific configuration settings. Los valores de las propiedades son exactamente los mismos valores que se especifican en el cuerpo de la solicitud de la operación de API de REST (método PUT) para crear el recurso.The values for the properties are the same as the values you provide in the request body for the REST API operation (PUT method) to create the resource. También puede especificar una matriz de copia para crear varias instancias de una propiedad.You can also specify a copy array to create several instances of a property. Para determinar los valores disponibles, vea referencia de plantilla.To determine available values, see template reference.
skusku Sin No Algunos recursos permiten valores que definen la SKU que se va a implementar.Some resources allow values that define the SKU to deploy. Por ejemplo, puede especificar el tipo de redundancia para una cuenta de almacenamiento.For example, you can specify the type of redundancy for a storage account.
kindkind Sin No Algunos recursos permiten un valor que define el tipo de recurso que va a implementar.Some resources allow a value that defines the type of resource you deploy. Por ejemplo, puede especificar el tipo de instancia de Cosmos DB que va a crear.For example, you can specify the type of Cosmos DB to create.
planplan Sin No Algunos recursos permiten valores que definen el plan que se va a implementar.Some resources allow values that define the plan to deploy. Por ejemplo, puede especificar la imagen de Marketplace para una máquina virtual.For example, you can specify the marketplace image for a virtual machine.
resourcesresources Sin No Recursos secundarios que dependen del recurso que se está definiendo.Child resources that depend on the resource being defined. Proporcione solo tipos de recursos que permita el esquema del recurso principal.Only provide resource types that are permitted by the schema of the parent resource. El tipo completo del recurso secundario incluye el tipo del recurso principal, por ejemplo, Microsoft.Web/sites/extensions.The fully qualified type of the child resource includes the parent resource type, such as Microsoft.Web/sites/extensions. La dependencia del recurso principal no está implícita.Dependency on the parent resource isn't implied. Debe definirla explícitamente.You must explicitly define that dependency.

CondiciónCondition

Si durante la implementación debe decidir si crear o no un recurso, use el elemento condition.When you must decide during deployment whether or not to create a resource, use the condition element. El valor de este elemento se resuelve como true o false.The value for this element resolves to true or false. Cuando el valor es true, el recurso se crea.When the value is true, the resource is created. Cuando el valor es false, el recurso no se crea.When the value is false, the resource isn't created. El valor solo se puede aplicar a todo el recurso.The value can only be applied to the whole resource.

Por lo general, este valor se usa cuando desea crear un nuevo recurso o usar uno existente.Typically, you use this value when you want to create a new resource or use an existing one. Por ejemplo, para especificar si se implementa una nueva cuenta de almacenamiento o se usa una cuenta de almacenamiento existente, use:For example, to specify whether a new storage account is deployed or an existing storage account is used, use:

{
    "condition": "[equals(parameters('newOrExisting'),'new')]",
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageAccountName')]",
    "apiVersion": "2017-06-01",
    "location": "[resourceGroup().location]",
    "sku": {
        "name": "[variables('storageAccountType')]"
    },
    "kind": "Storage",
    "properties": {}
}

Para una plantilla de ejemplo completo que usa el elemento condition, consulte VM with a new or existing Virtual Network, Storage, and Public IP (Máquina virtual con una red virtual nueva o existente, almacenamiento y dirección IP pública).For a complete example template that uses the condition element, see VM with a new or existing Virtual Network, Storage, and Public IP.

Si usa un referencia o lista se puede evaluar la función con un recurso que se implementa de forma condicional, la función incluso si el recurso no está implementado.If you use a reference or list function with a resource that is conditionally deployed, the function is evaluated even if the resource isn't deployed. Obtiene un error si la función hace referencia a un recurso que no existe.You get an error if the function refers to a resource that doesn't exist. Use la si función para asegurarse de que la función se evalúa solo para las condiciones cuando se implementa el recurso.Use the if function to make sure the function is only evaluated for conditions when the resource is deployed. Consulte la si función para una plantilla de ejemplo que usa si y la referencia con un recurso implementado de forma condicional.See the if function for a sample template that uses if and reference with a conditionally deployed resource.

Nombres de recursoResource names

Por lo general, trabaja con tres tipos de nombres de recursos en Resource Manager:Generally, you work with three types of resource names in Resource Manager:

  • Nombres de recurso que deben ser únicos.Resource names that must be unique.
  • Nombres de recurso que no tienen que ser únicos, pero decide proporcionarles un nombre que pueda ayudarle a identificarlos.Resource names that aren't required to be unique, but you choose to provide a name that can help you identify the resource.
  • Nombres de recurso que pueden ser genéricos.Resource names that can be generic.

Proporcione un nombre de recurso único para cualquier tipo de recurso que tiene un punto de conexión de acceso de datos.Provide a unique resource name for any resource type that has a data access endpoint. Entre los tipos de recursos comunes que requieren un nombre único se incluyen los siguientes:Some common resource types that require a unique name include:

  • Azure Storage1Azure Storage1
  • Característica Web Apps de Azure App ServiceWeb Apps feature of Azure App Service
  • SQL ServerSQL Server
  • Azure Key VaultAzure Key Vault
  • Azure Cache for RedisAzure Cache for Redis
  • Azure BatchAzure Batch
  • Administrador de tráfico de AzureAzure Traffic Manager
  • Azure SearchAzure Search
  • HDInsight de AzureAzure HDInsight

1 Los nombres de las cuentas de almacenamiento deben estar en minúsculas, tener 24 caracteres o menos y no incluir guiones.1 Storage account names also must be lowercase, 24 characters or less, and not have any hyphens.

Al establecer el nombre, puede crear un nombre único de forma manual o usar la función uniqueString() para generarlo.When setting the name, you can either manually create a unique name or use the uniqueString() function to generate a name. También puede que quiera agregar un prefijo o sufijo al resultado uniqueString.You also might want to add a prefix or suffix to the uniqueString result. Modificar el nombre único podría ayudarlo a identificar más fácilmente el tipo de recurso a partir del nombre.Modifying the unique name can help you more easily identify the resource type from the name. Por ejemplo, puede generar un nombre único para una cuenta de almacenamiento si usa la variable siguiente:For example, you can generate a unique name for a storage account by using the following variable:

"variables": {
  "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]"
}

Para algunos tipos de recursos, es posible que desee proporcionar un nombre para la identificación, pero el nombre no tiene que ser único.For some resource types, you might want to provide a name for identification, but the name doesn't have to be unique. Para estos tipos de recursos, proporcione un nombre que lo describe las características o uso.For these resource types, provide a name that describes it use or characteristics.

"parameters": {
  "vmName": { 
    "type": "string",
    "defaultValue": "demoLinuxVM",
    "metadata": {
      "description": "The name of the VM to create."
    }
  }
}

Para tipos de recursos que principalmente acceso a través de un recurso diferente, se puede usar un nombre genérico que está codificado de forma rígida en la plantilla.For resource types that you mostly access through a different resource, you can use a generic name that is hard-coded in the template. Por ejemplo, puede establecer un nombre genérico estándar para reglas de firewall en un servidor SQL:For example, you can set a standard, generic name for firewall rules on a SQL server:

{
  "type": "firewallrules",
  "name": "AllowAllWindowsAzureIps",
  ...
}

Ubicación del recursoResource location

Al implementar una plantilla, debe proporcionar una ubicación para cada recurso.When deploying a template, you must provide a location for each resource. Se admiten diferentes tipos de recursos en diferentes ubicaciones.Different resource types are supported in different locations. Para obtener las ubicaciones admitidas para un tipo de recurso, consulte Tipos de recursos y proveedores de recursos de Azure.To get the supported locations for a resource type, see Azure resource providers and types.

Use un parámetro para especificar la ubicación de recursos y establecer el valor predeterminado en resourceGroup().location.Use a parameter to specify the location for resources, and set the default value to resourceGroup().location.

En el ejemplo siguiente se muestra una cuenta de almacenamiento que está implementada en una ubicación especificada como parámetro:The following example shows a storage account that is deployed to a location specified as a parameter:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_ZRS",
        "Premium_LRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    }
  },
  "variables": {
    "storageAccountName": "[concat('storage', uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "apiVersion": "2018-07-01",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    }
  }
}

Recursos secundariosChild resources

En cada tipo recurso puede definir también una matriz de recursos secundarios.Within some resource types, you can also define an array of child resources. Los recursos secundarios son recursos que solo existen en el contexto de otro recurso.Child resources are resources that only exist within the context of another resource. Por ejemplo, una base de datos SQL no puede existir sin un servidor SQL, por lo que se trata de un elemento secundario del servidor.For example, a SQL database can't exist without a SQL server so the database is a child of the server. Puede definir la base de datos dentro de la definición del servidor.You can define the database within the definition for the server.

{
  "name": "exampleserver",
  "type": "Microsoft.Sql/servers",
  "apiVersion": "2014-04-01",
  ...
  "resources": [
    {
      "name": "exampledatabase",
      "type": "databases",
      "apiVersion": "2014-04-01",
      ...
    }
  ]
}

Cuando está anidado, el tipo se establece en databases, pero el tipo de recurso completo es Microsoft.Sql/servers/databases.When nested, the type is set to databases but its full resource type is Microsoft.Sql/servers/databases. No se proporciona Microsoft.Sql/servers/ porque se supone que viene del tipo de recurso primario.You don't provide Microsoft.Sql/servers/ because it's assumed from the parent resource type. El nombre del recurso secundario se establece en exampledatabase, pero el nombre completo incluye el primario.The child resource name is set to exampledatabase but the full name includes the parent name. No se proporciona exampleserver porque se supone que viene del recurso primario.You don't provide exampleserver because it's assumed from the parent resource.

El formato del tipo de recurso secundario es: {resource-provider-namespace}/{parent-resource-type}/{child-resource-type}The format of the child resource type is: {resource-provider-namespace}/{parent-resource-type}/{child-resource-type}

El formato del nombre de recurso secundario es: {parent-resource-name}/{child-resource-name}The format of the child resource name is: {parent-resource-name}/{child-resource-name}

Sin embargo, no es necesario definir la base de datos en el servidor.But, you don't have to define the database within the server. Puede definir el recurso secundario en el nivel superior.You can define the child resource at the top level. Este enfoque puede usarse si el recurso primario no está implementado en la misma plantilla o si quiere usar copy para crear más de un recurso secundario.You might use this approach if the parent resource isn't deployed in the same template, or if want to use copy to create more than one child resource. En este enfoque, es necesario proporcionar el tipo de recurso completo, así como incluir el nombre del recurso primario en el del secundario.With this approach, you must provide the full resource type, and include the parent resource name in the child resource name.

{
  "name": "exampleserver",
  "type": "Microsoft.Sql/servers",
  "apiVersion": "2014-04-01",
  "resources": [ 
  ],
  ...
},
{
  "name": "exampleserver/exampledatabase",
  "type": "Microsoft.Sql/servers/databases",
  "apiVersion": "2014-04-01",
  ...
}

Al construir una referencia completa a un recurso, el orden para combinar los segmentos a partir del tipo y el nombre no es simplemente una concatenación de los dos.When constructing a fully qualified reference to a resource, the order to combine segments from the type and name isn't simply a concatenation of the two. En su lugar, después del espacio de nombres, use una secuencia de pares tipo/nombre de menos a más específico:Instead, after the namespace, use a sequence of type/name pairs from least specific to most specific:

{resource-provider-namespace}/{parent-resource-type}/{parent-resource-name}[/{child-resource-type}/{child-resource-name}]*

Por ejemplo: For example:

Microsoft.Compute/virtualMachines/myVM/extensions/myExt es correcto Microsoft.Compute/virtualMachines/extensions/myVM/myExt no es correctoMicrosoft.Compute/virtualMachines/myVM/extensions/myExt is correct Microsoft.Compute/virtualMachines/extensions/myVM/myExt is not correct

SalidasOutputs

En la sección de salidas, especifique valores que se devuelven de la implementación.In the Outputs section, you specify values that are returned from deployment. Normalmente, se devuelven valores de los recursos que se implementaron.Typically, you return values from resources that were deployed.

Propiedades disponiblesAvailable properties

En el ejemplo siguiente se muestra la estructura de una definición de salida:The following example shows the structure of an output definition:

"outputs": {
  "<outputName>" : {
    "condition": "<boolean-value-whether-to-output-value>",
    "type" : "<type-of-output-value>",
    "value": "<output-value-expression>"
  }
}
Nombre del elementoElement name ObligatorioRequired DESCRIPCIÓNDescription
outputNameoutputName Yes Nombre del valor de salida.Name of the output value. Debe ser un identificador válido de JavaScript.Must be a valid JavaScript identifier.
conditioncondition Sin No Valor booleano que indica si se va a devolver este valor de salida.Boolean value that indicates whether this output value is returned. Si es true, el valor se incluye en la salida de la implementación.When true, the value is included in the output for the deployment. Si es false, el recurso se omite en esta implementación.When false, the output value is skipped for this deployment. Si no se especifica, el valor predeterminado es true.When not specified, the default value is true.
Tipotype Yes Tipo del valor de salida.Type of the output value. Los valores de salida admiten los mismos tipos que los parámetros de entrada de plantilla.Output values support the same types as template input parameters.
valuevalue Yes Expresión de lenguaje de plantilla que se evaluará y devolverá como valor de salida.Template language expression that is evaluated and returned as output value.

Definición y uso de valores de salidaDefine and use output values

En el ejemplo siguiente se muestra cómo devolver el identificador de recurso para una dirección IP pública:The following example shows how to return the resource ID for a public IP address:

"outputs": {
  "resourceID": {
    "type": "string",
    "value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
  }
}

En el ejemplo siguiente, se muestra cómo se devuelve condicionalmente el identificador de recurso de una dirección IP pública en función de si se ha implementado una nueva:The next example shows how to conditionally return the resource ID for a public IP address based on whether a new one was deployed:

"outputs": {
  "resourceID": {
    "condition": "[equals(parameters('publicIpNewOrExisting'), 'new')]",
    "type": "string",
    "value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
  }
}

Para obtener un ejemplo sencillo de salida condicional, consulte plantilla salida condicional.For a simple example of conditional output, see conditional output template.

Después de la implementación, puede recuperar el valor con el script.After the deployment, you can retrieve the value with script. Para PowerShell, use:For PowerShell, use:

(Get-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -Name <deployment-name>).Outputs.resourceID.value

Para la CLI de Azure, utilice:For Azure CLI, use:

az group deployment show -g <resource-group-name> -n <deployment-name> --query properties.outputs.resourceID.value

Puede recuperar el valor de salida de una plantilla vinculada mediante la función reference.You can retrieve the output value from a linked template by using the reference function. Para obtener un valor de salida de una plantilla vinculada, recupere el valor de propiedad con sintaxis de esta manera: "[reference('deploymentName').outputs.propertyName.value]".To get an output value from a linked template, retrieve the property value with syntax like: "[reference('deploymentName').outputs.propertyName.value]".

Al obtener una propiedad de salida a partir de una plantilla vinculada, el nombre de propiedad no puede incluir un guión.When getting an output property from a linked template, the property name can't include a dash.

El ejemplo siguiente muestra cómo establecer la dirección IP en un equilibrador de carga mediante la recuperación de un valor de una plantilla vinculada.The following example shows how to set the IP address on a load balancer by retrieving a value from a linked template.

"publicIPAddress": {
  "id": "[reference('linkedTemplate').outputs.resourceID.value]"
}

No se puede usar la función reference en la sección de salidas de una plantilla anidada.You can't use the reference function in the outputs section of a nested template. Para devolver los valores de un recurso implementado en una plantilla anidada, convierta la plantilla anidada en una plantilla vinculada.To return the values for a deployed resource in a nested template, convert your nested template to a linked template.

Plantillas de ejemplo de salidaOutput example templates

PlantillaTemplate DESCRIPCIÓNDescription
Variables de copiaCopy variables Crea variables complejas y genera esos valores.Creates complex variables and outputs those values. No implementa ningún recurso.Doesn't deploy any resources.
Dirección IP públicaPublic IP address Crea una dirección IP pública y genera el identificador de recurso.Creates a public IP address and outputs the resource ID.
Equilibrador de cargaLoad balancer Crea vínculos a la plantilla anterior.Links to the preceding template. Usa el identificador de recurso de la salida al crear el equilibrador de carga.Uses the resource ID in the output when creating the load balancer.

Comentarios y metadatosComments and metadata

Tiene unas cuantas opciones para agregar comentarios y metadatos a la plantilla.You have a few options for adding comments and metadata to your template.

Puede agregar un objeto metadata prácticamente en cualquier parte de la plantilla.You can add a metadata object almost anywhere in your template. Resource Manager omite el objeto, pero el editor JSON puede advertirle de que la propiedad no es válida.Resource Manager ignores the object, but your JSON editor may warn you that the property isn't valid. En el objeto, defina las propiedades que necesita.In the object, define the properties you need.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "comments": "This template was developed for demonstration purposes.",
    "author": "Example Name"
  },

Para parameters, agregue un objeto metadata con una propiedad description.For parameters, add a metadata object with a description property.

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "User name for the Virtual Machine."
    }
  },

Al implementar la plantilla a través del portal, el texto que proporciona en la descripción se usa automáticamente como sugerencia para ese parámetro.When deploying the template through the portal, the text you provide in the description is automatically used as a tip for that parameter.

Mostrar sugerencia de parámetros

Para resources, agregue un elemento comments o un objeto de metadatos.For resources, add a comments element or a metadata object. En el ejemplo siguiente se muestra un elemento de comentarios y un objeto de metadatos.The following example shows both a comments element and a metadata object.

"resources": [
  {
    "comments": "Storage account used to store VM disks",
    "apiVersion": "2018-07-01",
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[concat('storage', uniqueString(resourceGroup().id))]",
    "location": "[parameters('location')]",
    "metadata": {
      "comments": "These tags are needed for policy compliance."
    },
    "tags": {
      "Dept": "[parameters('deptName')]",
      "Environment": "[parameters('environment')]"
    },
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "Storage",
    "properties": {}
  }
]

Para outputs, agregue un objeto de metadatos para el valor de salida.For outputs, add a metadata object to the output value.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
    "metadata": {
      "comments": "Return the fully qualified domain name"
    }
  },

No se puede agregar un objeto de metadatos a las funciones definidas por el usuario.You can't add a metadata object to user-defined functions.

Para los comentarios en línea, puede usar //, pero esta sintaxis no funciona con todas las herramientas.For inline comments, you can use // but this syntax doesn't work with all tools. No se puede usar la CLI de Azure para implementar la plantilla con comentarios insertados.You can't use Azure CLI to deploy the template with inline comments. Y no se puede usar el editor de plantillas del portal para trabajar en las plantillas con comentarios insertados.And, you can't use the portal template editor to work on templates with inline comments. Si agrega este estilo de comentarios, asegúrese de que las herramientas que use admitan los comentarios JSON insertados.If you add this style of comment, be sure the tools you use support inline JSON comments.

{
  "type": "Microsoft.Compute/virtualMachines",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[parameters('location')]", //defaults to resource group location
  "apiVersion": "2018-10-01",
  "dependsOn": [ // storage account and network interface must be deployed first
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

En VS Code, puede establecer el modo de lenguaje en JSON con comentarios.In VS Code, you can set the language mode to JSON with comments. Los comentarios insertados ya no están marcados como no válidos.The inline comments are no longer marked as invalid. Para cambiar el modo:To change the mode:

  1. Abra la selección del modo de lenguaje (presione Ctrl + K M)Open language mode selection (Ctrl+K M)

  2. Seleccione JSON with Comments (JSON con comentarios).Select JSON with Comments.

    Seleccionar modo de lenguaje

Guías de inicio rápido y tutorialesQuickstarts and tutorials

Use las siguientes guías de inicio rápido y tutoriales para aprender a desarrollar plantillas de Resource Manager:Use the following quickstarts and tutorials to learn how to develop resource manager templates:

  • Guías de inicio rápidoQuickstarts

    TítuloTitle DESCRIPCIÓNDescription
    Uso de Azure PortalUse the Azure portal Genere una plantilla mediante el portal y entienda el proceso de edición e implementación de la plantilla.Generate a template using the portal, and understand the process of editing and deploying the template.
    Usar Visual Studio CodeUse Visual Studio Code Use Visual Studio Code para crear y editar plantillas y use Azure Cloud Shell para implementar plantillas.Use Visual Studio Code to create and edit templates, and how to use the Azure Cloud shell to deploy templates.
    Usar Visual StudioUse Visual Studio Use Visual Studio para crear, editar e implementar plantillas.Use Visual Studio to create, edit, and deploy templates.
  • TutorialesTutorials

    TítuloTitle DESCRIPCIÓNDescription
    Utilización de la referencia de la plantillaUtilize template reference Use la documentación de referencia de la plantilla para desarrollar las plantillas.Utilize the template reference documentation to develop templates. En el tutorial, busque el esquema de la cuenta de almacenamiento y use la información para crear una cuenta de almacenamiento cifrada.In the tutorial, you find the storage account schema, and use the information to create an encrypted storage account.
    Creación de varias instanciasCreate multiple instances Cree varias instancias de recursos de Azure.Create multiple instances of Azure resources. En el tutorial, puede crear varias instancias de la cuenta de almacenamiento.In the tutorial, you create multiple instances of storage account.
    Establecimiento del orden de implementación de los recursosSet resource deployment order Defina las dependencias de recursos.Define resource dependencies. En el tutorial, va a crear una red virtual, una máquina virtual y los recursos dependientes de Azure.In the tutorial, you create a virtual network, a virtual machine, and the dependent Azure resources. Aprenderá cómo se definen las dependencias.You learn how the dependencies are defined.
    Condiciones de usoUse conditions Implemente recursos basados en algunos valores de parámetro.Deploy resources based on some parameter values. En el tutorial, definirá una plantilla para crear una nueva cuenta de almacenamiento o usará una cuenta de almacenamiento ya existente basada en el valor de un parámetro.In the tutorial, you define a template to create a new storage account or use an existing storage account based on the value of a parameter.
    Integración de Key VaultIntegrate key vault Recupere los secretos o contraseñas de Azure Key Vault.Retrieve secrets/passwords from Azure Key Vault. En el tutorial, creará una máquina virtual.In the tutorial, you create a virtual machine. La contraseña del administrador de la máquina virtual se recupera de Key Vault.The virtual machine administrator password is retrieved from a Key Vault.
    Creación de plantillas vinculadasCreate linked templates Modularice las plantillas y llame a otras plantillas desde una plantilla.Modularize templates, and call other templates from a template. En el tutorial, va a crear una red virtual, una máquina virtual y los recursos dependientes.In the tutorial, you create a virtual network, a virtual machine, and the dependent resources. La cuenta de almacenamiento dependiente se define en una plantilla vinculada.The dependent storage account is defined in a linked template.
    Implementación de extensiones de máquina virtualDeploy virtual machine extensions Realice las tareas posteriores a la implementación mediante el uso de extensiones.Perform post-deployment tasks by using extensions. En el tutorial, se implementa una extensión de script de cliente para instalar el servidor web en la máquina virtual.In the tutorial, you deploy a customer script extension to install web server on the virtual machine.
    Implementación de extensiones de SQLDeploy SQL extensions Realice las tareas posteriores a la implementación mediante el uso de extensiones.Perform post-deployment tasks by using extensions. En el tutorial, se implementa una extensión de script de cliente para instalar el servidor web en la máquina virtual.In the tutorial, you deploy a customer script extension to install web server on the virtual machine.
    Protección de artefactosSecure artifacts Proteja los artefactos necesarios para completar las implementaciones.Secure the artifacts needed to complete the deployments. En el tutorial, obtendrá información sobre cómo proteger el artefacto que se usa en el tutorial de implementación de extensiones SQL.In the tutorial, you learn how to secure the artifact used in the Deploy SQL extensions tutorial.
    Uso de procedimientos de implementación segurosUse safe deployment practices Use Azure Deployment Manager.Use Azure Deployment manager.
    Tutorial: Troubleshoot Resource Manager template deployments (Tutorial: Solución de problemas con las implementaciones de plantillas de Resource Manager)Tutorial: Troubleshoot Resource Manager template deployments Solución de problemas de las implementaciones de plantillas.Troubleshoot template deployment issues.

Estos tutoriales se pueden usar individualmente o como una serie para obtener información sobre los conceptos principales de desarrollo de la plantilla de Resource Manager.These tutorials can be used individually, or as a series to learn the major Resource Manager template development concepts.

Pasos siguientesNext steps