Megosztás a következőn keresztül:


Paraméterek ARM-sablonokban

Ez a cikk azt ismerteti, hogyan definiálhat és használhat paramétereket az Azure Resource Manager-sablonban (ARM-sablonban). A paraméterek különböző értékeinek megadásával újra felhasználhatja a sablonokat a különböző környezetekhez.

A Resource Manager az üzembe helyezési műveletek megkezdése előtt feloldja a paraméterértékeket. Bárhol is használja a paramétert a sablonban, a Resource Manager lecseréli a feloldott értékre.

Minden paramétert az egyik adattípusra kell állítani.

A minValue, a maxValue, a minLength, a maxLength és az allowedValues mellett a languageVersion 2.0 a definíciókban, paraméterekben és kimeneti definíciókban használandó összesítési típusérvényesítési korlátozásokat is bevezet. Ezek a korlátozások a következők:

Feljegyzés

A Visual Studio Code-hoz készült Azure Resource Manager Tools bővítmény jelenlegi kiadása nem ismeri fel a languageVersion 2.0-ban végrehajtott fejlesztéseket.

Tipp.

A Bicep használatát javasoljuk, mert ugyanazokkal a képességekkel rendelkezik, mint az ARM-sablonok, és a szintaxis használata egyszerűbb. További információkért tekintse meg a paramétereket.

Egy sablonban legfeljebb 256 paramétert használhat. További információ: Sablonkorlátok.

A paraméterekkel kapcsolatos ajánlott eljárásokért tekintse meg a Paraméterek című témakört.

Minimális deklaráció

Legalább minden paraméternek szüksége van egy névre és típusra.

Amikor sablont helyez üzembe az Azure Portalon keresztül, a teve-kisbetűs paraméternevek térelválasztó nevekké alakulnak. Az alábbi példában a demoString például demo sztringként jelenik meg. További információ: A GitHub-adattár sablonjainak üzembe helyezési gombja, valamint erőforrások üzembe helyezése ARM-sablonokkal és Azure Portallal.

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

Biztonságos paraméterek

A sztring- vagy objektumparamétereket biztonságosként jelölheti meg. A biztonságos paraméter értékét a rendszer nem menti az üzembe helyezési előzményekbe, és nincs naplózva.

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

Megengedett értékek

Paraméterhez megadhat engedélyezett értékeket. Megadhatja az engedélyezett értékeket egy tömbben. Az üzembe helyezés sikertelen az ellenőrzés során, ha egy olyan értéket ad át a paraméternek, amely nem az engedélyezett értékek egyike.

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

Alapértelmezett érték

Megadhatja egy paraméter alapértelmezett értékét. Az alapértelmezett érték akkor használatos, ha az üzembe helyezés során nincs megadva érték.

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

Ha alapértelmezett értéket szeretne megadni a paraméter egyéb tulajdonságaival együtt, használja az alábbi szintaxist.

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

Az alapértelmezett értékkel rendelkező kifejezéseket használhatja. Nem használhatja a referenciafüggvényt vagy a paraméterek szakaszban található listafüggvényeket . Ezek a függvények lekérik egy erőforrás futtatókörnyezeti állapotát, és nem hajthatók végre az üzembe helyezés előtt a paraméterek feloldásakor.

A kifejezések más paramétertulajdonságokkal nem használhatók.

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

Egy másik paraméterértéket is használhat egy alapértelmezett érték létrehozásához. Az alábbi sablon egy gazdagépterv-nevet hoz létre a webhely nevéből.

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

A változókra azonban nem hivatkozhat alapértelmezett értékként.

Hosszkorlátozások

Megadhatja a sztring- és tömbparaméterek minimális és maximális hosszát. Beállíthat egy vagy mindkét korlátozást. Sztringek esetén a hossz a karakterek számát jelzi. Tömbök esetén a hossz a tömb elemeinek számát jelzi.

Az alábbi példa két paramétert deklarál. Az egyik paraméter egy 3–24 karakter hosszúságú tárfióknév. A másik paraméter egy tömb, amely 1–5 elemből állhat.

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

Egész számra vonatkozó korlátozások

Az egész számparaméterek minimális és maximális értékeit megadhatja. Beállíthat egy vagy mindkét korlátozást.

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

Objektumkorlátozások

Az objektumkorlátozások csak objektumokon engedélyezettek, és csak a languageVersion 2.0-val használhatók.

Tulajdonságok

Az érték properties a tulajdonságnév =>típusdefiníció leképezése.

Az alábbi példa elfogadná{"foo": "string", "bar": 1}, de elutasítaná{"foo": "string", "bar": -1}, {"foo": "", "bar": 1}vagy bármilyen objektumot, amely nem rendelkezik tulajdonságmalfoo.bar

"parameters": {
  "objectParameter": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3
      },
      "bar": {
        "type": "int",
        "minValue": 0
      }
    }
  }
}

Minden tulajdonságra szükség van, kivéve, ha a tulajdonság típusdefiníciója "null értékű": igaz korlátozással rendelkezik. Ha az előző példában mindkét tulajdonságot kötelezővé szeretné tenni, az a következőképpen nézne ki:

"parameters": {
  "objectParameter": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3,
        "nullable": true
      },
      "bar": {
        "type": "int",
        "minValue": 0,
        "nullable": true
      }
    }
  }
}

additionalProperties

Az érték additionalProperties egy típusdefiníció vagy logikai érték. Ha nincs additionalProperties megkötés meghatározva, az alapértelmezett érték az true.

Ha az érték típusdefiníció, az érték a kényszerben nem említett összes tulajdonságra alkalmazott sémát properties írja le. Az alábbi példa elfogadná {"fizz": "buzz", "foo": "bar"} , de elutasítaná {"property": 1}.

"parameters": {
  "dictionaryParameter": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3,
        "nullable": true
      },
      "bar": {
        "type": "int",
        "minValue": 0,
        "nullable": true
      }
    },
    "additionalProperties": {
      "type": "string"
    }
  }
}

Ha az érték az false, a kényszerben properties meghatározottakon túl nem adható meg tulajdonság. Az alábbi példa elfogadná {"foo": "string", "bar": 1}, de elutasítaná {"foo": "string", "bar": 1, "fizz": "buzz"}.

"parameters": {
  "dictionaryParameter": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3
      },
      "bar": {
        "type": "int",
        "minValue": 0
      }
    },
    "additionalProperties": false
  }
}

Ha az érték az true, a kényszerben properties nem definiált tulajdonságok bármilyen értéket elfogadnak. Az alábbi példa elfogadná {"foo": "string", "bar": 1, "fizz": "buzz"}a következőt.

"parameters": {
  "dictionaryParameter": {
    "type": "object",
    "properties": {
      "foo": {
        "type": "string",
        "minLength": 3
      },
      "bar": {
        "type": "int",
        "minValue": 0
      }
    },
    "additionalProperties": true
  }
}

diszkriminatív

Az érték discriminator határozza meg, hogy milyen sémát kell alkalmazni egy diszkriminatív tulajdonság alapján. Az alábbi példa elfogadná vagy {"type": "ints", "foo": 1, "bar": 2} {"type": "strings", "fizz": "buzz", "pop": "goes", "the": "weasel"}elutasítaná {"type": "ints", "fizz": "buzz"}.

"parameters": {
  "taggedUnionParameter": {
    "type": "object",
    "discriminator": {
      "propertyName": "type",
      "mapping": {
        "ints": {
          "type": "object",
          "additionalProperties": {"type": "int"}
        },
        "strings": {
          "type": "object",
          "additionalProperties": {"type": "string"}
          }
      }
    }
  }
}

Tömbkorlátok

A tömbkényszerítések csak tömbökön engedélyezettek, és csak a languageVersion 2.0-val használhatók.

prefixItems

Az érték prefixItems típusdefiníciók tömbje. Az érték minden típusdefiníciója az a séma, amely egy tömb elemének ellenőrzésére szolgál ugyanazon az indexen. Az alábbi példa elfogadná [1, true] , de elutasítja [1, "string"] vagy [1]:

"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ]
  }
}

elemek

Az érték items egy típusdefiníció vagy logikai érték. Ha nincs items megkötés meghatározva, az alapértelmezett érték az true.

Ha az érték típusdefiníció, az érték a tömb összes elemére alkalmazott sémát írja le, amelynek indexe nagyobb, mint a prefixItems kényszer legnagyobb indexe. A következő példa elfogadná [1, true, 1] vagy [1, true, 1, 1] elutasítaná [1, true, "foo"]:

"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      { "type": "int" },
      { "type": "bool" }
    ],
    "items": { "type": "int" },
    "defaultValue": [1, true, "foo"]
  }
}

A használata prefixItemsnélkül is használhatóitems. A következő példa elfogadná [1, 2] vagy [1] elutasítaná ["foo"]:

"parameters": {
  "intArrayParameter": {
    "type": "array",
    "items": {"type": "int"}
  }
}

Ha az érték az false, az érvényesített tömbnek pontosan ugyanolyan hosszúságúnak kell lennie, mint a prefixItems kényszernek. Az alábbi példa elfogadná[1, true], de elutasítaná és elutasítaná[1, true, 1].[1, true, false, "foo", "bar"]

"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ],
    "items": false
  }
}

Ha az érték igaz, a tömb azon elemei, amelyek indexe nagyobb, mint a prefixItems kényszer legnagyobb indexe, bármilyen értéket elfogadnak. Az alábbi példák elfogadnák és [1, true, 1] elfogadnák [1, true]azokat[1, true, false, "foo", "bar"].

"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ]
  }
}
"parameters": {
  "tupleParameter": {
    "type": "array",
    "prefixItems": [
      {"type": "int"},
      {"type": "bool"}
    ]
  },
  "items": true
}

null értékű kényszer

A null értékű kényszer csak a languageVersion 2.0-val használható. Azt jelzi, hogy az érték kihagyható vagy elhagyható null . Példa: Tulajdonságok .

Leírás

Egy paraméterhez leírást is hozzáadhat, amely segít a sablon felhasználóinak megérteni a megadható értéket. Amikor a sablont a portálon keresztül telepíti, a leírásban megadott szöveg automatikusan a paraméter tippjeként lesz használva. Csak akkor adjon hozzá leírást, ha a szöveg több információt tartalmaz, mint amennyit a paraméter nevéből lehet következtetni.

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

Paraméter használata

Egy paraméter értékére való hivatkozáshoz használja a paraméterfüggvényt . Az alábbi példa egy paraméterértéket használ egy kulcstartónévhez.

{
  "$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')]",
      ...
    }
  ]
}

Objektumok paraméterekként

A kapcsolódó értékeket úgy rendszerezheti, hogy objektumként adja át őket. Ez a módszer a sablonban lévő paraméterek számát is csökkenti.

Az alábbi példa egy objektumnak számító paramétert mutat be. Az alapértelmezett érték az objektum várt tulajdonságait jeleníti meg. Ezeket a tulajdonságokat a rendszer az üzembe helyezendő erőforrás meghatározásakor használja.

{
  "$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éldasablonok

Az alábbi példák a paraméterek használatára vonatkozó forgatókönyveket mutatják be.

Sablon Leírás
paraméterek az alapértelmezett értékek függvényeivel Bemutatja, hogyan használhatók sablonfüggvények a paraméterek alapértelmezett értékeinek definiálásakor. A sablon nem helyez üzembe erőforrásokat. Paraméterértékeket hoz létre, és visszaadja ezeket az értékeket.
paraméterobjektum Egy objektum paraméterhez való használatát mutatja be. A sablon nem helyez üzembe erőforrásokat. Paraméterértékeket hoz létre, és visszaadja ezeket az értékeket.

Következő lépések