Eksplorowanie struktury szablonu usługi Azure Resource Manager
W tej lekcji dowiesz się, jak korzystać z szablonów usługi Azure Resource Manager (ARM) w celu implementowania infrastruktury jako kodu. Poznasz poszczególne sekcje szablonu usługi Resource Manager, dowiesz się, jak wdrożyć taki szablon na platformie Azure, a także zapoznasz się ze szczegółowymi informacjami na temat sekcji resources szablonu usługi Resource Manager.
Czym jest infrastruktura jako kod?
Infrastruktura jako kod umożliwia opisanie infrastruktury potrzebnej dla aplikacji za pomocą kodu.
Dzięki temu rozwiązaniu w centralnym repozytorium kodu można przechowywać zarówno kod aplikacji, jak i wszystkie elementy potrzebne do jej wdrożenia. Zalety infrastruktury jako kodu:
- Spójne konfiguracje
- Zwiększona skalowalność
- Szybsze wdrożenia
- Lepsza możliwość śledzenia
W tym filmie wideo opisano infrastrukturę jako kod:
Co to jest szablon usługi Resource Manager?
Szablony usługi ARM to pliki JavaScript Object Notation (JSON), które definiują infrastrukturę i konfigurację wdrożenia. Szablon używa składni deklaratywnej. Składnia deklaratywna to sposób tworzenia struktury i elementów, które opisują, jak wyglądają zasoby bez opisywania przepływu sterowania. Składnia deklaratywna różni się od składni imperatywnej, która korzysta z poleceń wykonywanych na komputerze. W przypadku składni imperatywnej najważniejsze jest określenie poszczególnych kroków wdrażania zasobów.
Szablony usługi Resource Manager umożliwiają deklarowanie elementów, które mają zostać wdrożone, bez konieczności pisania sekwencji poleceń programistycznych wymaganych do ich utworzenia. W szablonie usługi Resource Manager należy określić zasoby i właściwości dla tych zasobów. Usługa Azure Resource Manager następnie używa tych informacji do wdrażania zasobów w zorganizowany i spójny sposób.
Korzyści wynikające z używania szablonów usługi ARM
Szablony usługi Resource Manager umożliwiają zautomatyzowanie wdrożeń i skorzystanie z zalet infrastruktury jako kodu (IaC). Kod szablonu staje się częścią infrastruktury i projektów programistycznych. Podobnie jak w przypadku kodu aplikacji, pliki IaC można przechowywać w repozytorium źródłowym i kontrolować ich wersje.
Szablony usługi ARM są idempotentne, co oznacza, że ten sam szablon można wdrażać wiele razy, uzyskując takie same typy zasobów w identycznym stanie.
Usługa Resource Manager organizuje wdrażanie zasobów, aby były tworzone w odpowiedniej kolejności. Jeśli to możliwe, zasoby są tworzone równolegle, dlatego wdrożenia szablonów usługi ARM zakończą się szybciej niż wdrożenia skryptowe.
Usługa Resource Manager ma również wbudowaną funkcję sprawdzania poprawności. Sprawdza szablon przed rozpoczęciem wdrażania, aby upewnić się, że wdrożenie zakończy się pomyślnie.
Jeśli wdrożenia stają się bardziej skomplikowane, można podzielić szablony usługi Resource Manager na mniejsze składniki do wielokrotnego użytku. Te mniejsze szablony można połączyć ze sobą podczas wdrażania. Szablony można także zagnieżdżać w innych szablonach.
W witrynie Azure Portal można przejrzeć historię wdrożeń i uzyskać informacje o stanie wdrożenia. W portalu są wyświetlane wartości wszystkich parametrów i danych wyjściowych.
Szablony usługi ARM można także integrować z narzędziami ciągłej integracji i ciągłego wdrażania (CI/CD), takimi jak usługa Azure Pipelines, która może automatyzować potoki wydań w celu wprowadzania szybkich i niezawodnych aktualizacji aplikacji oraz infrastruktury. Korzystając z usługi Azure DevOps i zadań szablonów usługi ARM, można w sposób ciągły kompilować i wdrażać projekty.
Struktura pliku szablonu usługi ARM
Podczas pisania szablonu usługi ARM musisz zrozumieć wszystkie części, które tworzą szablon i co robią. Pliki szablonów usługi ARM składają się z następujących elementów:
Element | opis |
---|---|
schemat | Wymagana sekcja, w której definiowana jest lokalizacja pliku schematu JSON opisującego strukturę danych JSON. Używany numer wersji zależy od zakresu wdrożenia i edytora JSON. |
contentVersion | Wymagana sekcja, w której definiowana jest wersja szablonu (na przykład 1.0.0.0). Możesz użyć tej wartości podczas dokumentowania istotnych zmian dokonywanych w szablonie, dzięki czemu upewnisz się, że jest wdrażany właściwy szablon. |
apiProfile | Opcjonalna sekcja, która definiuje zbiór wersji interfejsu API dla typów zasobów. Dzięki tej wartości unikniesz konieczności określania wersji interfejsu API dla każdego zasobu w szablonie. |
parameters | Opcjonalna sekcja służąca do określania wartości dostępnych podczas wdrażania. Te wartości można podać w pliku parametrów, za pomocą parametrów wiersza polecenia lub w witrynie Azure Portal. |
Zmiennych | Opcjonalna sekcja, w której definiowane są wartości upraszczające wyrażenia języka szablonu. |
Funkcje | Opcjonalna sekcja, w której można opisać dostępne w ramach szablonu funkcje definiowane przez użytkownika. Funkcje zdefiniowane przez użytkownika mogą uprościć szablon w przypadku wielokrotnego użycia wyrażeń w szablonie. |
zasoby | Wymagana sekcja zawierająca definicje rzeczywistych elementów, które mają zostać wdrożone lub zaktualizowane w grupie zasobów bądź w ramach subskrypcji. |
wyjście | Opcjonalna sekcja określająca wartości zwracane na końcu wdrożenia. |
Wdrażanie szablonu usługi Resource Manager na platformie Azure
Szablon usługi Resource Manager można wdrożyć na platformie Azure w jeden z następujących sposobów:
- Wdrażanie szablonu lokalnego
- Wdrażanie szablonu połączonego
- Wdrażanie w potoku ciągłego wdrażania
W tym module przedstawiono szczegółowo wdrażanie lokalnego szablonu usługi Resource Manager. W przyszłych modułach learn dowiesz się, jak wdrożyć bardziej skomplikowaną infrastrukturę i jak zintegrować się z usługą Azure Pipelines.
Wdrażanie szablonu lokalnego wymaga zainstalowania programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure w środowisku lokalnym.
Najpierw należy zalogować się do platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.
Następnie zdefiniuj grupę zasobów. Możesz użyć już zdefiniowanej grupy zasobów lub utworzyć nową za pomocą następującego polecenia. Dostępne wartości lokalizacji można uzyskać z: az account list-locations
(interfejs wiersza polecenia) lub Get-AzLocation
(PowerShell). Lokalizację domyślną można skonfigurować przy użyciu polecenia az configure --defaults location=<location>
.
az group create \
--name {name of your resource group} \
--location "{location}"
Aby rozpocząć wdrażanie szablonu w grupie zasobów, użyj polecenia interfejsu wiersza polecenia platformy Azure az deployment group create lub polecenia programu Azure PowerShell New-AzResourceGroupDeployment.
Napiwek
Różnica między elementami az deployment group create
i az group deployment create
polega na tym, że jest to stare polecenie, które az group deployment create
ma być przestarzałe i zostanie zastąpione przez az deployment group create
. W związku z tym zalecamy wdrażanie zasobów w zakresie grupy zasobów przy użyciu polecenia az deployment group create
.
Oba polecenia wymagają grupy zasobów, regionu i nazwy wdrożenia, aby można je było łatwo zidentyfikować w historii wdrożenia. Dla wygody ćwiczenia tworzą zmienną, która przechowuje ścieżkę do pliku szablonu. Ta zmienna ułatwia uruchamianie poleceń wdrażania, ponieważ nie trzeba ponownie wpisywać ścieżki za każdym razem, gdy wdrażasz. Oto przykład:
Aby uruchomić to polecenie wdrażania, musisz mieć najnowszą wersję interfejsu wiersza polecenia platformy Azure.
templateFile="{provide-the-path-to-the-template-file}"
az deployment group create \
--name blanktemplate \
--resource-group myResourceGroup \
--template-file $templateFile
Szablony połączone są używane do wdrażania złożonych rozwiązań. Szablon można podzielić na wiele mniejszych szablonów wdrażanych za pośrednictwem głównego szablonu. Podczas wdrażania szablonu głównego wyzwala wdrożenie połączonego szablonu. Szablony połączone można przechowywać i zabezpieczać za pomocą tokenu SAS.
Potok ciągłej integracji/ciągłego wdrażania automatyzuje tworzenie i wdrażanie projektów deweloperskich, które obejmują projekty szablonów usługi Resource Manager. Dwa najpopularniejsze potoki używane do wdrażania szablonów to usługa Azure Pipelines i funkcja GitHub Actions.
Więcej informacji na temat tych dwóch typów wdrażania znajduje się w innych modułach.
Dodawanie zasobów do szablonu
Aby dodać zasób do szablonu, musisz znać dostawcę zasobów i jego typy zasobów. Składnia dla tej kombinacji ma następującą postać: {dostawca-zasobu}/{typ-zasobu}. Aby na przykład dodać zasób konta magazynu do szablonu, potrzebny jest Microsoft.Storage
dostawca zasobów. Jednym z typów dla tego dostawcy jest storageAccount
. Dlatego typ zasobu jest wyświetlany jako Microsoft.Storage/storageAccounts
. Aby znaleźć potrzebnych dostawców, można skorzystać z listy dostawców zasobów dla usług platformy Azure.
Po zdefiniowaniu dostawcy i typu zasobu należy zrozumieć właściwości dla każdego typu zasobu, którego chcesz użyć. Szczegółowe informacje zawiera artykuł Definiowanie zasobów w szablonie usługi Azure Resource Manager. Aby znaleźć zasób, wyświetl listę w lewej kolumnie. Zauważ, że właściwości są sortowane według wersji interfejsu API.
Oto przykład kilku z wymienionych właściwości na stronie dotyczącej kont magazynu:
W naszym przykładzie magazynu szablon może wyglądać następująco:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"apiProfile": "",
"parameters": {},
"variables": {},
"functions": [],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-05-01",
"name": "learntemplatestorage123",
"location": "westus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
],
"outputs": {}
}