Pisanie szablonów ARM
Utwórz sparametryzowany szablon ARM w formacie JSON do wdrożenia konta magazynu i maszyny wirtualnej oraz używaj funkcji i zmiennych szablonów, aby szablony można było ponownie wykorzystywać.
Pisanie szablonów ARM to bezpłatna lekcja Cloud & IT Cert Prep na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Dlaczego warto używać szablonów ARM?
Szablony ARM umożliwiają definiowanie infrastruktury Azure jako kodu w formacie JSON. Pozwala to na powtarzalne, spójne wdrożenia, które można przechowywać w systemie kontroli wersji razem z kodem aplikacji. Szablony są idempotentne — wielokrotne uruchomienie tego samego szablonu daje ten sam rezultat, dzięki czemu można je bezpiecznie stosować ponownie po wprowadzeniu zmian.
Szkielet szablonu i schemat
Każdy szablon ARM zaczyna się od właściwości $schema wskazującej adres URL schematu szablonu, po której następuje ciąg contentVersion. Schemat informuje portal Azure i rozszerzenia edytora, jak weryfikować szablon i zapewniać funkcję IntelliSense. Kolejne pięć głównych sekcji to parameters, variables, functions, resources i outputs.
{
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#',
'contentVersion': '1.0.0.0',
'parameters': {},
'variables': {},
'functions': [],
'resources': [],
'outputs': {}
}Definiowanie parametrów
Parametry sprawiają, że szablony można wielokrotnie wykorzystywać, ponieważ przyjmują dane wejściowe w czasie wdrażania. Każdy parametr ma właściwość type (string, int, bool, object, array, secureString), opcjonalną wartość defaultValue oraz opcjonalną właściwość allowedValues służącą do walidacji. Użycie secureString w przypadku haseł gwarantuje, że wartość nigdy nie zostanie zapisana w historii wdrożeń.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24,
"metadata": { "description": "Globally unique storage account name" }
},
"sku": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": ["Standard_LRS", "Standard_GRS", "Premium_LRS"]
}
}Używanie zmiennych dla wartości obliczanych
Zmienne przechowują wartości obliczane na podstawie parametrów lub funkcji szablonu, ograniczając powtórzenia i ułatwiając konserwację szablonów. Zmienne są obliczane raz i używane w całej sekcji resources za pomocą wyrażenia [variables('name')]. Typowym wzorcem jest budowanie nazwy zasobu przez połączenie parametru z unikatowym sufiksem.
"variables": {
"uniqueStorageName": "[concat(parameters('storageAccountName'), uniqueString(resourceGroup().id))]",
"location": "[resourceGroup().location]"
}Definiowanie zasobów
Tablica resources jest najważniejszą częścią szablonu ARM. Każdy element opisuje jeden zasób Azure i zawiera wymagane pola: type, apiVersion, name oraz location. Właściwość apiVersion przypisuje zasobowi konkretną wersję schematu dostawcy — zawsze należy używać najnowszej stabilnej wersji, aby uzyskać dostęp do najnowszych funkcji i uniknąć wycofanych właściwości.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "[variables('uniqueStorageName')]",
"location": "[variables('location')]",
"sku": { "name": "[parameters('sku')]" },
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true,
"minimumTlsVersion": "TLS1_2"
}
}
]Funkcje i wyrażenia szablonów
Wyrażenia szablonów ARM są umieszczane w nawiasach kwadratowych [...] i obsługują wbudowane funkcje dla ciągów, tablic, obiektów oraz identyfikatorów zasobów. Do często używanych funkcji należą concat(), resourceGroup(), resourceId(), uniqueString() i parameters(). Funkcje te są obliczane po stronie serwera przez ARM w czasie wdrażania, a nie lokalnie.
// Reference a resource ID inside a template
"subnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', 'myVNet', 'mySubnet')]"
// Build a unique, deterministic name
"name": "[concat('storage', uniqueString(resourceGroup().id))]"
// Conditionally include a resource
"condition": "[equals(parameters('deployStorage'), true)]"Outputs: zwracanie wartości
Sekcja outputs definiuje wartości zwracane przez ARM po pomyślnym wdrożeniu. Outputs są niezbędne do łączenia szablonów — można wdrożyć szablon sieci i zwrócić identyfikator zasobu podsieci, a następnie przekazać go jako parametr do szablonu maszyny wirtualnej. Outputs mogą odwoływać się do dowolnego wyrażenia, w tym do właściwości zasobów z wdrożenia.
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('uniqueStorageName')]"
},
"blobEndpoint": {
"type": "string",
"value": "[reference(variables('uniqueStorageName')).primaryEndpoints.blob]"
}
}Szablony połączone i zagnieżdżone
W przypadku złożonych architektur ARM obsługuje szablony połączone (odwołujące się do zewnętrznych adresów URL szablonów) oraz szablony zagnieżdżone (osadzające szablon w tablicy resources za pomocą typu Microsoft.Resources/deployments). Umożliwia to podzielenie dużego wdrożenia infrastruktury na modułowe, wielokrotnego użytku elementy, przy zachowaniu jednego szablonu orkiestracji jako punktu wejścia.
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "networkDeploy",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/contoso/templates/main/network.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"vnetName": { "value": "[parameters('vnetName')]" }
}
}
}Pliki parametrów
Zamiast przekazywać parametry w wierszu polecenia, można przechowywać je w osobnym pliku parametrów — pliku JSON z obiektem parameters zawierającym pary nazwa-wartość. Pliki parametrów mogą być specyficzne dla danego środowiska (np. dev.parameters.json, prod.parameters.json) i zatwierdzane w systemie kontroli wersji, podczas gdy poufne wartości są przechowywane jako odwołania do Azure Key Vault, a nie w postaci zwykłego tekstu.
// dev.parameters.json
{
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#',
'contentVersion': '1.0.0.0',
'parameters': {
'storageAccountName': { 'value': 'devstorageacct' },
'sku': { 'value': 'Standard_LRS' }
}
}
// Deploy with parameters file
// az deployment group create -g MyRG -f azuredeploy.json -p dev.parameters.jsonWdrażanie i weryfikowanie szablonów
Użyj polecenia Azure CLI az deployment group create, aby wdrożyć szablon do grupy zasobów. Przed wdrożeniem na produkcji uruchom az deployment group validate, aby wykryć błędy schematu i logiki, oraz az deployment group what-if, aby wyświetlić podgląd zmian zasobów. Te trzy polecenia tworzą bezpieczny potok wdrażania: weryfikacja, podgląd, wdrożenie.
# Step 1: Validate the template syntax
az deployment group validate \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.json
# Step 2: Preview changes
az deployment group what-if \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.json
# Step 3: Deploy
az deployment group create \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.jsonNajlepsze praktyki dotyczące szablonów ARM
Przestrzegaj następujących najlepszych praktyk dotyczących szablonów ARM: używaj parametrów dla wartości zależnych od środowiska, używaj zmiennych, aby unikać powtórzeń, przypisuj wersje interfejsu API do stabilnych wersji, używaj secureString dla haseł, dodawaj opisy metadanych do parametrów oraz dziel duże szablony na połączone moduły. Przechowuj szablony w repozytorium Git i wdrażaj je za pośrednictwem potoku CI/CD, aby zapewnić możliwość audytu.
Szybki test
Sprawdź swoją wiedzę na temat zagadnień Microsoft Azure Fundamentals (AZ-900) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji nauczył(a) się Pan/Pani, że szablony ARM to dokumenty JSON, które deklaratywnie definiują infrastrukturę Azure, parametry i zmienne sprawiają, że szablony można wielokrotnie wykorzystywać i łatwiej je utrzymywać, a przepływ pracy validate, what-if, deploy umożliwia bezpieczne i powtarzalne wdrożenia. Następnie zajmiemy się Bicep — nowoczesną abstrakcją nad kodem JSON ARM.
Często zadawane pytania
Czy lekcja „Pisanie szablonów ARM” jest bezpłatna?
Tak — pełny tekst „Pisanie szablonów ARM” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Co nauczysz się w „Pisanie szablonów ARM”?
Utwórz sparametryzowany szablon ARM w formacie JSON do wdrożenia konta magazynu i maszyny wirtualnej oraz używaj funkcji i zmiennych szablonów, aby szablony można było ponownie wykorzystywać. Ćwiczysz Cloud & IT Cert Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cloud & IT Cert Prep?
Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Pisanie szablonów ARM”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cloud & IT Cert Prep?
Tak. Każda lekcja Cloud & IT Cert Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Jak działa Azure Resource Manager
- Pisanie szablonów ARM
- Bicep: nowoczesna infrastruktura Azure jako kod
- Terraform na platformie Azure