Modularizace šablon

Dokončeno

Pokud používáte šablony Azure Resource Manageru, je nejlepší je modularizovat jejich rozdělením do jednotlivých komponent.

Primární metodika použití spočívá v použití propojených šablon.

Umožňuje rozdělit řešení na cílové komponenty a znovu použít tyto různé prvky v různých nasazeních.

Propojená šablona

Přidejte prostředek nasazení do hlavní šablony pro propojení jedné šablony s druhou.

"resources": [
  {
      "apiVersion": "2017-05-10",
      "name": "linkedTemplate",
      "type": "Microsoft.Resources/deployments",
      "properties": {
          "mode": "Incremental",
          <link-to-external-template>
      }
  }
]


Vnořená šablona

Můžete také vnořit šablonu v rámci hlavní šablony, použít vlastnost šablony a zadat syntaxi šablony.

Poněkud pomáhá modularizaci, ale rozdělení různých komponent může mít za následek velikostný hlavní soubor, protože všechny prvky jsou v daném jediném souboru.

"resources": [
  {
    "apiVersion": "2017-05-10",
    "name": "nestedTemplate",
    "type": "Microsoft.Resources/deployments",
    "properties": {
      "mode": "Incremental",
      "template": {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "resources": [
          {
            "type": "Microsoft.Storage/storageAccounts",
            "name": "[variables('storageName')]",
            "apiVersion": "2015-06-15",
            "location": "West US",
            "properties": {
              "accountType": "Standard_LRS"
            }
          }
        ]
      }
    }
  }
]

Poznámka

Pro vnořené šablony nemůžete použít parametry ani proměnné definované v rámci samotné vnořené šablony. Parametry a proměnné můžete použít pouze z hlavní šablony.

Vlastnosti, které zadáte pro prostředek nasazení, se budou lišit v závislosti na propojení s externí šablonou nebo vnoření vložené šablony v rámci hlavní šablony.

Režimy nasazení

Při nasazování prostředků pomocí šablon máte tři možnosti:

  • ověřit. Tato možnost zkompiluje šablony, ověří nasazení, zajistí funkčnost šablony (například bez cyklických závislostí) a správnou syntaxi.
  • přírůstkový režim (výchozí). Tato možnost nasadí jenom cokoli, co je definováno v šabloně. Neodebere ani neupraví žádné zdroje, které nejsou definovány v šabloně. Pokud jste například nasadili virtuální počítač prostřednictvím šablony a přejmenovali virtuální počítač v šabloně, zůstane první nasazený virtuální počítač po opětovném spuštění šablony. Jedná se o výchozí režim.
  • úplný režim: Resource Manager odstraní prostředky, které existují ve skupině prostředků, ale nejsou zadané v šabloně. Například po nasazení šablony budou ve skupině prostředků existovat pouze prostředky definované v šabloně. Osvědčeným postupem je použití tohoto režimu pro produkční prostředí k dosažení idempotence v šablonách nasazení.

Pokud chcete nastavit režim nasazení pomocí PowerShellu, použijte parametr režimu podle příkladu vnořené šablony výše v tomto tématu.

Poznámka

Osvědčeným postupem je použít jednu skupinu prostředků pro každé nasazení.

Poznámka

Pro propojené i vnořené šablony můžete použít pouze režim nasazení incremental.

Externí šablona a externí parametry

Pokud chcete vytvořit odkaz na externí šablonu a soubor parametrů, použijte templateLink a parametersLink.

Při propojení se šablonou se ujistěte, že k ní má služba Resource Manager přístup.

Nemůžete například zadat místní soubor nebo soubor, který je dostupný jenom v místní síti.

Můžete zadat pouze hodnotu URI (Uniform Resource Identifier), která zahrnuje protokol HTTP nebo HTTPS.

Jednou z možností je umístit propojenou šablonu do účtu úložiště a použít identifikátor URI pro danou položku.

Můžete také zadat parametr přímo. Nemůžete ale použít vložené parametry i odkaz na soubor parametrů.

Následující příklad používá parametr templateLink:

  "resources": [
    {
      "name": "linkedTemplate",
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2018-05-01",
      "properties": {
          "mode": "Incremental",
          "templateLink": {
              "uri":"https://linkedtemplateek1store.blob.core.windows.net/linkedtemplates/linkedStorageAccount.json?sv=2018-03-28&sr=b&sig=dO9p7XnbhGq56BO%2BSW3o9tX7E2WUdIk%2BpF1MTK2eFfs%3D&se=2018-12-31T14%3A32%3A29Z&sp=r"
          },
          "parameters": {
              "storageAccountName":{"value": "[variables('storageAccountName')]"},
              "location":{"value": "[parameters('location')]"}
          }
      }
    },


Zabezpečení externí šablony

I když propojená šablona musí být k dispozici externě, nemusí být zpřístupněna veřejnosti.

Místo toho můžete šablonu přidat do privátního účtu úložiště přístupného jenom vlastníkovi účtu úložiště a vytvořit tokeny sdíleného přístupového podpisu (SAS), které umožní přístup během nasazení.

Tento token SAS přidáte do identifikátoru URI propojené šablony.

I když se token předá jako zabezpečený řetězec, zaprotokoluje se v operacích nasazení identifikátor URI propojené šablony, včetně tokenu SAS.

Pokud chcete omezit vystavení, můžete také nastavit datum vypršení platnosti tokenu.