Modularyzowanie szablonów
W przypadku korzystania z szablonów usługi Azure Resource Manager najlepiej je modularyzować, dzieląc je na poszczególne składniki.
Podstawową metodologią do użycia jest użycie szablonów połączonych.
Umożliwia podzielenie rozwiązania na docelowe składniki i ponowne użycie tych różnych elementów w różnych wdrożeniach.
Szablon połączony
Dodaj zasób wdrożenia do głównego szablonu, aby połączyć jeden szablon z innym.
"resources": [
{
"apiVersion": "2017-05-10",
"name": "linkedTemplate",
"type": "Microsoft.Resources/deployments",
"properties": {
"mode": "Incremental",
<link-to-external-template>
}
}
]
Szablon zagnieżdżony
Szablon można również zagnieżdżać w ramach głównego szablonu, używać właściwości szablonu i określać składnię szablonu.
Nieco pomaga modułyzacji, ale podzielenie różnych składników może spowodować powstanie dużego pliku głównego, ponieważ wszystkie elementy znajdują się w tym pojedynczym pliku.
"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"
}
}
]
}
}
}
]
Uwaga
Nie można używać parametrów ani zmiennych zdefiniowanych w samym szablonie zagnieżdżonym dla szablonów zagnieżdżonych. Parametry i zmienne można używać tylko z szablonu głównego.
Właściwości podane dla zasobu wdrożenia różnią się w zależności od łączenia z szablonem zewnętrznym lub zagnieżdżania wbudowanego szablonu w głównym szablonie.
Tryby wdrożeń
Podczas wdrażania zasobów przy użyciu szablonów dostępne są trzy opcje:
- zweryfikuj. Ta opcja kompiluje szablony, weryfikuje wdrożenie, zapewnia, że szablon działa (na przykład nie ma zależności cyklicznych) i poprawną składnię.
- tryb przyrostowy (wartość domyślna). Ta opcja wdraża tylko niezależnie od tego, co jest zdefiniowane w szablonie. Nie usuwa ani nie modyfikuje żadnych zasobów, które nie są zdefiniowane w szablonie. Jeśli na przykład wdrożono maszynę wirtualną za pomocą szablonu, a następnie zmieniono nazwę maszyny wirtualnej w szablonie, pierwsza wdrożona maszyna wirtualna pozostanie po ponownym uruchomieniu szablonu. Jest to tryb domyślny.
- tryb ukończenia: usługa Resource Manager usuwa zasoby, które istnieją w grupie zasobów, ale nie jest określona w szablonie. Na przykład tylko zasoby zdefiniowane w szablonie będą obecne w grupie zasobów po wdrożeniu szablonu. Najlepszym rozwiązaniem jest użycie tego trybu dla środowisk produkcyjnych w celu osiągnięcia idempotencji w szablonach wdrażania.
Podczas wdrażania za pomocą programu PowerShell, aby ustawić tryb wdrażania, użyj parametru Mode , zgodnie z przykładowym szablonem zagnieżdżonym we wcześniejszej części tego tematu.
Uwaga
Najlepszym rozwiązaniem jest użycie jednej grupy zasobów na wdrożenie.
Uwaga
Tryb wdrażania można używać incremental
tylko dla szablonów połączonych i zagnieżdżonych.
Szablon zewnętrzny i parametry zewnętrzne
Aby połączyć się z zewnętrznym szablonem i plikiem parametrów, użyj elementu templateLink i parametersLink.
Podczas łączenia z szablonem upewnij się, że usługa Resource Manager może uzyskać do niego dostęp.
Na przykład nie można określić pliku lokalnego ani pliku dostępnego tylko w sieci lokalnej.
Można podać tylko wartość Uniform Resource Identifier (URI), która zawiera protokół HTTP lub HTTPS.
Jedną z opcji jest umieszczenie połączonego szablonu na koncie magazynu i użycie identyfikatora URI dla tego elementu.
Możesz również podać wbudowany parametr. Nie można jednak używać zarówno parametrów wbudowanych, jak i linku do pliku parametrów.
W poniższym przykładzie użyto parametru 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')]"}
}
}
},
Zabezpieczanie szablonu zewnętrznego
Mimo że połączony szablon musi być dostępny zewnętrznie, nie musi być udostępniany publicznie.
Zamiast tego możesz dodać szablon do prywatnego konta magazynu dostępnego tylko dla właściciela konta magazynu, tworząc tokeny sygnatury dostępu współdzielonego (SAS), aby umożliwić dostęp podczas wdrażania.
Dodasz ten token SAS do identyfikatora URI połączonego szablonu.
Mimo że token jest przekazywany jako bezpieczny ciąg, identyfikator URI połączonego szablonu, w tym token SAS, jest rejestrowany w operacjach wdrażania.
Aby ograniczyć narażenie, możesz również ustawić datę wygaśnięcia tokenu.