Dodawanie elastyczności do szablonu usługi Azure Resource Manager przy użyciu parametrów i danych wyjściowych

Ukończone

W ostatniej lekcji utworzono szablon usługi Azure Resource Manager (ARM) i dodano do niego konto usługi Azure Storage. Okazuje się jednak, że występuje problem z szablonem. Nazwa konta magazynu jest zakodowana na stałe. Każdorazowe użycie tego szablonu spowoduje wdrożenie tego samego konta magazynu. Aby wdrożyć konto magazynu o innej nazwie, musisz utworzyć nowy szablon, który nie jest praktycznym sposobem automatyzacji wdrożeń. Jednostka SKU konta magazynu jest również zakodowana na stałe, co oznacza, że nie można różnić typu konta magazynu dla różnych środowisk. Pamiętaj, że w naszym scenariuszu każde wdrożenie może mieć inny typ konta magazynu. Dodając parametr dla jednostki SKU konta magazynu, można sprawić, że szablon będzie bardziej użyteczny na potrzeby wielokrotnego użytku.

W tej lekcji poznasz sekcje parametrów i danych wyjściowych szablonu.

Parametry szablonu usługi ARM

Parametry szablonu usługi ARM umożliwiają dostosowanie wdrożenia przez podanie wartości dostosowanych do określonego środowiska. Na przykład można przekazywać różne wartości w zależności od tego, czy wdrażasz w środowisku na potrzeby programowania, testowania, produkcji czy innych. Poprzedni szablon korzysta na przykład z jednostki SKU konta magazynu o nazwie Standard_LRS. Można ponownie użyć tego szablonu do innych wdrożeń, które tworzą konto magazynu, przez utworzenie parametru dla nazwy jednostki SKU konta magazynu. Następnie nazwę jednostki SKU używanej dla konkretnego wdrożenia można przekazać podczas wdrażania szablonu. Ten krok można wykonać w wierszu polecenia lub przy użyciu pliku parametrów.

parameters W sekcji szablonu określ wartości, które można wprowadzić podczas wdrażania zasobów. W szablonie można umieścić maksymalnie 256 parametrów. W definicjach parametrów można korzystać z większości funkcji szablonu.

Dostępne są następujące właściwości parametrów:

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

Dozwolone typy parametrów:

  • string
  • secureString
  • integers
  • boolean
  • obiekt
  • secureObject
  • tablica

Zalecenia dotyczące używania parametrów

Użyj parametrów dla ustawień, które różnią się w zależności od środowiska; na przykład jednostka SKU, rozmiar lub pojemność. Użyj również parametrów dla nazw zasobów, które chcesz określić samodzielnie, aby ułatwić identyfikację lub zachować zgodność z wewnętrznymi konwencjami nazewnictwa. Należy podać opisy poszczególnych parametrów i wszędzie tam, gdzie to możliwe, używać wartości domyślnych.

Ze względów bezpieczeństwa nigdy nie należy kodować ani udostępniać wartości domyślnych nazw użytkowników i/lub haseł w szablonach. Dla nazw użytkowników i haseł (lub wpisów tajnych) należy zawsze używać parametrów. Na potrzeby wszystkich haseł i wpisów tajnych używaj parametrów typu secureString. W przypadku przekazywania poufnych danych w obiekcie JSON użyj typu secureObject . Parametrów szablonu typu secureString i secureObject nie można odczytywać ani zbierać po wdrożeniu zasobu.

Korzystanie z parametrów w szablonie usługi Resource Manager

W sekcji parameters szablonu usługi ARM określ parametry, które można wprowadzić podczas wdrażania zasobów. W szablonie można umieścić maksymalnie 256 parametrów.

Oto przykład pliku szablonu z parametrem jednostki SKU konta magazynu zdefiniowanej w sekcji szablonu parameters . Dla parametru można określić wartość domyślną, która zostanie użyta, jeśli podczas wykonywania szablonu nie zostanie podana żadna wartość parametru.

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

Parametr można następnie wykorzystać w definicji zasobu. Składnia jest następująca: [parameters('name of the parameter')] Użyjesz parameters funkcji . Więcej informacji na temat funkcji znajdziesz w następnym module.

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

Podczas wdrażania szablonu można podać wartość parametru . Zwróć uwagę na ostatni wiersz w następującym poleceniu:

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

Dane wyjściowe szablonu usługi Resource Manager

W sekcji Dane wyjściowe szablonu usługi ARM można określić wartości, które zostaną zwrócone po pomyślnym wdrożeniu. Poniżej przedstawiono elementy, które składają się na sekcję 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 opis
output-name Musi być prawidłowym identyfikatorem JavaScript.
Warunek (Opcjonalnie) Wartość logiczna wskazująca, czy ta wartość wyjściowa ma być zwracana. W przypadku ustawienia wartości true (prawda) ta wartość jest uwzględniana w danych wyjściowych wdrożenia. W przypadku ustawienia wartości false (fałsz) ta wartość wyjściowa jest pomijana dla tego wdrożenia. Jeśli ten element nie zostanie podany, domyślnie przyjmowana jest dla niego wartość true.
type Typ wartości wyjściowej.
wartość (Opcjonalnie) Wyrażenie języka szablonu, które jest oceniane i zwracane jako wartość wyjściowa.
Kopii (Opcjonalnie) Element copy służy do zwracania więcej niż jednej wartości dla danych wyjściowych.

Używanie danych wyjściowych w szablonie usługi Resource Manager

Oto przykład danych wyjściowych punktów końcowych konta magazynu:

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

Zwróć uwagę na część reference tego wyrażenia. Ta funkcja pobiera stan środowiska uruchomieniowego konta magazynu.

Ponowne wdrażanie szablonu usługi Resource Manager

Pamiętaj, że szablony usługi ARM są idempotentne, co oznacza, że można ponownie wdrożyć szablon w tym samym środowisku, a jeśli nic nie zostało zmienione w szablonie, nic się nie zmieni w środowisku. Jeśli wprowadzono zmianę w szablonie (na przykład zmieniono wartość parametru), zostanie wdrożona tylko ta zmiana. Szablon może zawierać wszystkie zasoby potrzebne dla rozwiązania na platformie Azure i można go ponownie bezpiecznie wykonać. Zasoby zostaną utworzone tylko wtedy, jeśli jeszcze nie istnieją, i zaktualizowane tylko w przypadku wprowadzenia zmiany.