Parametry v šablonách ARM

Tento článek popisuje, jak definovat a používat parametry v šabloně Azure Resource Manager (šablona ARM). Když pro parametry zadáte různé hodnoty, můžete šablonu znovu použít pro různá prostředí.

Resource Manager před zahájením operací nasazení překládá hodnoty parametrů. Bez ohledu na to, kde se v Resource Manager používá parametr , ho nahradí přeloženou hodnotou.

Každý parametr musí být nastavený na jeden z datových typů.

Minimální deklarace

Každý parametr vyžaduje minimálně název a typ.

Když nasadíte šablonu prostřednictvím Azure Portal, názvy parametrů ve camel-casedu se převedou na názvy oddělené mezerami. Například demoString v následujícím příkladu je zobrazený jako Ukázkový řetězec. Další informace najdete v tématu Použití tlačítka nasazení k nasazení šablon z GitHub úložiště a Nasazení prostředků pomocí šablon ARM a Azure Portal.

"parameters": {
  "demoString": {
    "type": "string"
  },
  "demoInt": {
    "type": "int"
  },
  "demoBool": {
    "type": "bool"
  },
  "demoObject": {
    "type": "object"
  },
  "demoArray": {
    "type": "array"
  }
}

Zabezpečené parametry

Parametry řetězce nebo objektu můžete označit jako zabezpečené. Hodnota parametru secure se neuloží do historie nasazení a nezaprotokoluje se.

"parameters": {
  "demoPassword": {
    "type": "secureString"
  },
  "demoSecretObject": {
    "type": "secureObject"
  }
}

Povolené hodnoty

Pro parametr můžete definovat povolené hodnoty. Povolené hodnoty zadáte v poli. Nasazení během ověřování selže, pokud se předá hodnota parametru , který není jednou z povolených hodnot.

"parameters": {
  "demoEnum": {
    "type": "string",
    "allowedValues": [
      "one",
      "two"
    ]
  }
}

Výchozí hodnota

Můžete zadat výchozí hodnotu parametru. Výchozí hodnota se použije, když se během nasazení nezadá hodnota.

"parameters": {
  "demoParam": {
    "type": "string",
    "defaultValue": "Contoso"
  }
}

Pokud chcete zadat výchozí hodnotu spolu s dalšími vlastnostmi parametru, použijte následující syntaxi.

"parameters": {
  "demoParam": {
    "type": "string",
    "defaultValue": "Contoso",
    "allowedValues": [
      "Contoso",
      "Fabrikam"
    ]
  }
}

Můžete použít výrazy s výchozí hodnotou. V oddílu parameters nemůžete použít referenční funkci ani žádnou z funkcí seznamu. Tyto funkce zobrazí stav modulu runtime prostředku a nelze je spustit před nasazením, když jsou parametry vyřešeny.

Výrazy nejsou povoleny s jinými vlastnostmi parametru.

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

K vytvoření výchozí hodnoty můžete použít jinou hodnotu parametru. Následující šablona vytvoří název plánu hostitele z názvu lokality.

"parameters": {
  "siteName": {
    "type": "string",
    "defaultValue": "[concat('site', uniqueString(resourceGroup().id))]"
  },
  "hostingPlanName": {
    "type": "string",
    "defaultValue": "[concat(parameters('siteName'),'-plan')]"
  }
}

Omezení délky

Pro parametry řetězce a pole můžete zadat minimální a maximální délku. Můžete nastavit jedno nebo obě omezení. U řetězců určuje délka počet znaků. U polí určuje délka počet položek v poli.

Následující příklad deklaruje dva parametry. Jeden parametr je pro název účtu úložiště, který musí mít 3 až 24 znaků. Druhý parametr je pole, které musí mít 1 až 5 položek.

"parameters": {
  "storageAccountName": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24
  },
  "appNames": {
    "type": "array",
    "minLength": 1,
    "maxLength": 5
  }
}

Omezení celočíselných čísel

Pro celočíselné parametry můžete nastavit minimální a maximální hodnoty. Můžete nastavit jedno nebo obě omezení.

"parameters": {
  "month": {
    "type": "int",
    "minValue": 1,
    "maxValue": 12
  }
}

Popis

Do parametru můžete přidat popis, který uživatelům šablony pomůže pochopit hodnotu, kterou mají zadat. Při nasazování šablony prostřednictvím portálu se text, který v popisu zadáte, automaticky použije jako tip pro tento parametr. Popis přidejte pouze v případě, že text poskytuje více informací, než lze odvodit z názvu parametru.

"parameters": {
  "virtualMachineSize": {
    "type": "string",
    "metadata": {
      "description": "Must be at least Standard_A3 to support 2 NICs."
    },
    "defaultValue": "Standard_DS1_v2"
  }
}

Použití parametru

Pokud chcete odkazovat na hodnotu parametru, použijte funkci parameters. Následující příklad používá hodnotu parametru pro název trezoru klíčů.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vaultName": {
      "type": "string",
      "defaultValue": "[format('keyVault{0}', uniqueString(resourceGroup().id))]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2021-06-01-preview",
      "name": "[parameters('vaultName')]",
      ...
    }
  ]
}

Objekty jako parametry

Související hodnoty můžete uspořádat tak, že je předáte jako objekt. Tento přístup také snižuje počet parametrů v šabloně.

Následující příklad ukazuje parametr , který je objektem. Výchozí hodnota zobrazuje očekávané vlastnosti objektu. Tyto vlastnosti se používají při definování prostředku, který se má nasadit.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "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"
          }
        ]
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2021-02-01",
      "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]"
            }
          }
        ]
      }
    }
  ]
}

Příklady šablon

Následující příklady ukazují scénáře použití parametrů.

Template (Šablona) Popis
Parametry s funkcemi pro výchozí hodnoty Demonstruje způsob použití funkcí šablony při definování výchozích hodnot pro parametry. Šablona nenasadí žádné prostředky. Sestaví hodnoty parametrů a vrátí tyto hodnoty.
parameter – objekt Demonstruje použití objektu pro parametr. Šablona nenasadí žádné prostředky. Sestaví hodnoty parametrů a vrátí tyto hodnoty.

Další kroky