Zvýšení flexibility šablony Azure Resource Manageru pomocí parametrů a výstupů

Dokončeno

V poslední lekci jste vytvořili šablonu Azure Resource Manageru (ARM) a přidali do ní účet úložiště Azure. Pravděpodobně jste si všimli, že u šablony vznikl problém. Název účtu úložiště je pevně zakódovaný. Danou šablonu proto můžete použít jen k nasazení stejného účtu úložiště. Pokud chcete nasadit účet úložiště s jiným názvem, musíte vytvořit novou šablonu, což není praktický způsob, jak automatizovat nasazení. Skladová položka účtu úložiště je také pevně zakódovaná, což znamená, že nemůžete měnit typ účtu úložiště pro různá prostředí. Vzpomeňte si, že v našem scénáři může mít každé nasazení jiný typ účtu úložiště. Pokud chcete změnit šablonu tak, aby se dala používat opakovaně, můžete přidat parametr pro skladovou položku účtu úložiště.

V této lekci se dozvíte o parametrech a výstupních částech šablony.

Parametry šablony ARM

Parametry šablony ARM umožňují přizpůsobit nasazení tím, že poskytují hodnoty přizpůsobené konkrétnímu prostředí. Předáváte například různé hodnoty podle toho, jestli nasazujete do prostředí pro vývoj, testování, produkci nebo další typy. Předchozí šablona například používá skladovou položku účtu úložiště Standard_LRS. Tuto šablonu můžete znovu použít pro jiná nasazení vytvářející účet úložiště, když z názvu skladové položky účtu úložiště vytvoříte parametr. Pak při nasazení šablony předáte název skladové položky, který chcete pro toto konkrétní nasazení použít. Tento krok můžete provést buď prostřednictvím příkazového řádku, nebo pomocí souboru parametrů.

parameters V části šablony určíte, které hodnoty můžete zadat při nasazování prostředků. V šabloně můžete zadat jen 256 parametrů. Definice parametrů můžou používat většinu funkcí šablon.

Následují dostupné vlastnosti pro parametr:

"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>"
    }
  }
}

Následují povolené typy parametrů:

  • řetězec
  • secureString
  • integers
  • boolean
  • objekt
  • secureObject
  • pole

Doporučení pro používání parametrů

Použijte parametry pro nastavení, která se liší v závislosti na prostředí; Například skladová položka, velikost nebo kapacita. Použijte také parametry pro názvy prostředků, které chcete zadat sami pro snadnou identifikaci nebo pro zajištění souladu s interními zásadami vytváření názvů. Zároveň vám doporučujeme zadat pro každý parametr popis a použít výchozí hodnoty, kdykoli to bude možné.

Z bezpečnostních důvodů nikdy v šablonách nezadávejte pevné kódy ani nezadávejte výchozí hodnoty pro uživatelská jména nebo hesla. Pro uživatelská jména a hesla (nebo tajné kódy) vždy používejte parametry. Pro všechna hesla a tajné kódy použijte typ secureString. Pokud předáte citlivá data v objektu JSON, použijte typ secureObject . Parametry šablony s typy secureString nebo secureObject není možné po nasazení daného prostředku číst ani získat.

Používání parametrů v šabloně ARM

V části parametry šablony ARM zadejte parametry, které můžete zadat při nasazování prostředků. V šabloně můžete zadat jen 256 parametrů.

Tady je příklad souboru šablony s parametrem pro skladovou položku účtu úložiště definovanou v části šablony parameters . Pro parametr můžete zadat výchozí hodnotu, která se použije v případě, že se při spuštění nespecifikuje žádná hodnota.

"parameters": {
  "storageAccountType": {
    "type": "string",
    "defaultValue": "Standard_LRS",
    "allowedValues": [
      "Standard_LRS",
      "Standard_GRS",
      "Standard_ZRS",
      "Premium_LRS"
    ],
    "metadata": {
      "description": "Storage Account type"
    }
  }
}

Pak se použije parametr v definici prostředku. Syntaxe je [parameters('name of the parameter')]. Použijete parameters funkci. Další informace o funkcích se dozvíte v dalším modulu.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-04-01",
    "name": "learntemplatestorage123",
    "location": "[resourceGroup().location]",
    "sku": {
      "name": "[parameters('storageAccountType')]"
    },
    "kind": "StorageV2",
    "properties": {
      "supportsHttpsTrafficOnly": true
    }
  }
]

Při nasazení šablony můžete zadat hodnotu parametru. Všimněte si posledního řádku v následujícím příkazu:

templateFile="azuredeploy.json"
az deployment group create \
  --name testdeployment1 \
  --template-file $templateFile \
  --parameters storageAccountType=Standard_LRS

Výstupy šablony ARM

V části výstupy šablony ARM můžete zadat hodnoty, které se vrátí po úspěšném nasazení. Následují elementy, které tvoří oddíl outputs.

"outputs": {
  "<output-name>": {
    "condition": "<boolean-value-whether-to-output-value>",
    "type": "<type-of-output-value>",
    "value": "<output-value-expression>",
    "copy": {
      "count": <number-of-iterations>,
      "input": <values-for-the-variable>
    }
  }
}
Element (Prvek) Popis
output-name musí představovat platný identifikátor JavaScriptu.
Podmínka (Nepovinné) Logická hodnota, která určuje, jestli se tato výstupní hodnota vrátí. Pokud má hodnotu pravda (true), hodnota se zahrne do výstupu pro nasazení. Jestliže má hodnotu nepravda (false), výstupní hodnota se pro dané nasazení vynechá. V případě, že se nezadá, je výchozí hodnota pravda (true).
type představuje typ výstupní hodnoty.
value (Nepovinné) Výraz jazyka šablony, který se vyhodnotí a vrátí jako výstupní hodnota.
Kopírovat (Nepovinné) Copy se používá k vrácení více než jedné hodnoty pro výstup.

Použití výstupů v šabloně ARM

Tady je příklad výstupu koncových bodů účtu úložiště:

"outputs": {
  "storageEndpoint": {
    "type": "object",
    "value": "[reference('learntemplatestorage123').primaryEndpoints]"
  }
}

Všimněte si části reference výrazu. Tato funkce načítá stav spuštění účtu úložiště.

Opětovné nasazení šablony ARM

Vzpomeňte si, že šablony ARM jsou idempotentní, což znamená, že šablonu můžete znovu nasadit do stejného prostředí a pokud se v šabloně nic nezměnilo, nic se v prostředí nezmění. Pokud byla v šabloně provedena změna (například jste změnili hodnotu parametru), nasadí se pouze tato změna. Šablona může obsahovat všechny prostředky, které potřebujete pro vaše řešení Azure, a můžete ji znovu bezpečně spustit. Prostředky se vytvoří, jen pokud zatím neexistují, a aktualizují se pouze v případě změny.