Exploración de los componentes de la plantilla
Las plantillas de Resource Manager se escriben en JSON, lo que permite expresar los datos almacenados como un objeto (como una máquina virtual) en texto.
Un documento JSON es, básicamente, una colección de pares clave-valor. Cada clave es una cadena cuyos valores pueden ser los siguientes:
- Una cadena.
- Un número.
- Expresión booleana.
- Una lista de valores.
- Un objeto (que es una colección de otros pares clave-valor).
Una plantilla de Resource Manager puede contener secciones que se expresen mediante la notación JSON, pero no están relacionadas con el propio lenguaje JSON:
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "",
"parameters": { },
"variables": { },
"functions": [ ],
"resources": [ ],
"outputs": { }
}
Vamos a revisar más detalladamente cada una de estas secciones.
Parámetros
En esta sección se especifica qué valores son configurables cuando la plantilla se ejecuta.
Por ejemplo, puede permitir que los usuarios de la plantilla establezcan un nombre de usuario, una contraseña o un nombre de dominio.
Este es un ejemplo que ilustra dos parámetros, uno relacionado con un nombre de usuario de máquina virtual (VM) y el otro con su contraseña correspondiente:
"parameters": {
"adminUsername": {
"type": "string",
"metadata": {
"description": "Username for the Virtual Machine."
}
},
"adminPassword": {
"type": "securestring",
"metadata": {
"description": "Password for the Virtual Machine."
}
}
}
Variables
En esta sección se definen los valores que se usan en toda la plantilla.
Las variables contribuyen a que las plantillas sean fáciles de mantener.
Por ejemplo, es posible definir un nombre de cuenta de almacenamiento una vez como una variable y, luego, usar esa variable en toda la plantilla.
Si el nombre de cuenta de almacenamiento cambia, solo será necesario actualizar la variable una vez.
Este es un ejemplo que muestra algunas variables que describen las características de red de una máquina virtual:
"variables": {
"nicName": "myVMNic",
"addressPrefix": "10.0.0.0/16",
"subnetName": "Subnet",
"subnetPrefix": "10.0.0.0/24",
"publicIPAddressName": "myPublicIP",
"virtualNetworkName": "MyVNET"
}
Functions
En esta sección se definen los procedimientos que no desea que se repitan a lo largo de la plantilla.
Al igual que las variables, las funciones contribuyen a que las plantillas sean fáciles de mantener.
En el siguiente ejemplo se crea una función que genera un nombre único para usarlo al crear los recursos que tienen requisitos de nomenclatura únicos globalmente:
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
Resources
En esta sección es donde se definen los recursos de Azure que conforman la implementación.
En el siguiente ejemplo se crea un recurso de dirección IP pública:
{
"type": "Microsoft.Network/publicIPAddresses",
"name": "[variables('publicIPAddressName')]",
"location": "[parameters('location')]",
"apiVersion": "2018-08-01",
"properties": {
"publicIPAllocationMethod": "Dynamic",
"dnsSettings": {
"domainNameLabel": "[parameters('dnsLabelPrefix')]"
}
}
}
Aquí, el tipo de recurso es Microsoft.Network/publicIPAddresses
.
El nombre se obtiene de la sección de variables y la ubicación (o región de Azure), de la sección de parámetros.
Dado que los tipos de recursos pueden cambiar con el tiempo, apiVersion
hace referencia a la versión del tipo de recurso que queremos usar.
A medida que los tipos de recursos evolucionan, podemos modificar las plantillas para que funcionen con las características más recientes.
Salidas
En esta sección se define la información que le gustaría recibir cuando se ejecute la plantilla.
Por ejemplo, es posible que desee recibir la dirección IP o el nombre de dominio completo (FQDN) de la máquina virtual, la información que no sabrá hasta que se ejecute la implementación.
Este es un ejemplo que ilustra una salida llamada hostname.
El valor de FQDN se obtiene de la configuración de dirección IP pública de la máquina virtual:
"outputs": {
"hostname": {
"type": "string",
"value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]"
}
}
¿Necesita ayuda? Consulta nuestra guía de solución de problemas o notifica un problema para enviar comentarios específicos.