Ćwiczenie — wdrażanie szablonów usługi ARM
Uwaga
Przy pierwszym aktywowaniu piaskownicy i zaakceptowaniu warunków konto Microsoft zostaje skojarzone z nowym katalogiem platformy Azure o nazwie Microsoft Learn Sandbox. Zostanie też do Ciebie przypisana specjalna subskrypcja o nazwie Subskrypcja Concierge.
Tutaj wdrożysz szablon usługi Azure Resource Manager (ARM) z komputera i z repozytorium GitHub, podając identyfikator URI.
Ważne
W tym ćwiczeniu używane są narzędzia usługi Azure Resource Manager dla programu Visual Studio Code. Pamiętaj, aby zainstalować to rozszerzenie w programie Visual Studio Code.
Konfigurowanie środowiska, korzystając z subskrypcji piaskownicy witryny Microsoft Learn
Aby wykonać każde wdrożenie opisane w tej lekcji, należy zalogować się do konta platformy Azure z poziomu terminalu programu Visual Studio Code.
Zaloguj się na konto, którego użyto do aktywowania piaskownicy.
Logowanie się do platformy Azure
Z poziomu terminalu w programie Visual Studio Code uruchom następujące polecenie, aby zalogować się na platformie Azure. Uruchomienie tego polecenia spowoduje otwarcie przeglądarki, która umożliwia zalogowanie się do konta.
Connect-AzAccount
Po zalogowaniu się w terminalu zostanie wyświetlona lista subskrypcji skojarzonych z tym kontem. Jeśli aktywowano piaskownicę, na liście powinna być widoczna subskrypcja Concierge.
Sprawdź nazwę subskrypcji. Poniższe polecenie wyświetla listę subskrypcji, nazw i ich identyfikatorów w łatwym do odczytania formacie tabeli. Wyszukaj ciąg
Concierge Subscription
.Get-AzSubscription
Zmień aktywną subskrypcję na subskrypcję Concierge.
$context = Get-AzSubscription -SubscriptionName "Concierge Subscription" | Set-AzContext
Ustawianie domyślnej grupy zasobów
Musisz teraz ustawić grupę zasobów utworzoną automatycznie w piaskownicy jako domyślną grupę zasobów. Aby wykonać tę operację, najpierw musisz pobrać nazwę grupy zasobów, uruchamiając następujące polecenie.
Get-AzResourceGroup | where-object ResourceGroupName -match "learn" | Set-AzDefault
W tym poleceniu użyj nazwy zasobu uzyskanej z poprzedniego polecenia. (Wygląda na to, że jest to coś takiego jak learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) To polecenie umożliwia pominięcie tego parametru z pozostałych poleceń programu Azure PowerShell w tym ćwiczeniu.
Uwaga
Zwykle po uruchomieniu polecenia programu PowerShell lub interfejsu wiersza polecenia platformy Azure w celu wdrożenia szablonu należy określić docelową nazwę grupy zasobów. Uruchamiając poprzednie polecenie, ustawiliśmy kontekst wdrożenia. Określiliśmy nazwę grupy zasobów piaskownicy, uruchamiając polecenie Set-AzDefault programu PowerShell:
Set-AzDefault -ResourceGroupName {Resource Group Name}
Wdrażanie szablonu lokalnego
W poniższym ćwiczeniu wdrożysz szablon z komputera lokalnego. W tym miejscu nie jest wymagana nazwa grupy zasobów, która jest zwykle używana podczas wdrażania we własnym środowisku, ponieważ w poprzedniej sekcji zdefiniowaliśmy już domyślną grupę zasobów.
Na początek skopiuj kod następującego szablonu i wklej go do pliku w katalogu lokalnym. Na przykład użyj
C:\JSON\maintemplate.json
.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "VnetName": { "type": "string", "defaultValue": "VNet-001", "metadata": { "description": "Virtual Network Name" } }, "CostCenterIO": { "type": "string", "defaultValue": "12345", "metadata": { "description": "Cost Center IO number for cross billing" } }, "OwnerName": { "type": "string", "defaultValue": "John Smith", "metadata": { "description": "Name of the stakeholder responsible for this resource" } } }, "variables": {}, "resources": [ { "apiVersion": "2018-10-01", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('VnetName')]", "location": "[resourceGroup().location]", "tags": { "CostCenter": "[parameters('CostCenterIO')]", "Owner": "[parameters('OwnerName')]" }, "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "enableVmProtection": false, "enableDdosProtection": false, "subnets": [ { "name": "subnet001", "properties": { "addressPrefix": "10.0.0.0/24" } }, { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ] } } ] }
Po zapisaniu pliku lokalnie możesz użyć polecenia programu PowerShell, aby wdrożyć go na poziomie grupy zasobów, o którym mówiliśmy w ostatniej lekcji. Użyj polecenia New-AzResourceGroupDeployment .
$templateFile="C:\JSON\maintemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile
Po zakończeniu powinny pojawić się wyniki podobne do tego przykładu.
DeploymentName : DeployLocalTemplate-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:50:04 p.m. Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vnetName String VNet-001 costCenterIO String 12345 ownerName String John Smith Outputs : DeploymentDebugLogLevel :
Wdrażanie tego samego szablonu lokalnego z wartościami parametrów
W ostatnim ćwiczeniu szablon został wdrożony przy użyciu domyślnych wartości parametrów. Podczas wdrażania lokalnego szablonu usługi ARM może być konieczne przekazanie wartości parametrów. Możesz użyć parametrów śródwierszowych lub pliku parametrów.
Aby przekazać parametry śródwierszowe do wdrożenia, należy podać nazwy tych parametrów za pomocą polecenia cmdlet New-AzResourceGroupDeployment
. W następnym ćwiczeniu przekażesz te parametry jako parametry śródwierszowe i jako plik parametrów.
Używając tego samego szablonu co w ostatnim ćwiczeniu, skonstruuj tabelę skrótów zawierającą wartości wymaganych parametrów szablonu.
$parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"} $templateFile="C:\JSON\maintemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-2-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile ` -TemplateParameterObject $parameters
Po zakończeniu działania tego polecenia powinny zostać wyświetlone wyniki podobne do następujących:
DeploymentName : DeployLocalTemplate-2-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:51:55 p.m. Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vnetName String VNet-001 costCenterIO String 12345 ownerName String John Smith Outputs : DeploymentDebugLogLevel :
Zamiast przekazywania parametrów jako wartości śródwierszowych w skrypcie, prostsze może być użycie pliku JSON zawierającego wartości parametrów. Plik parametrów może być plikiem lokalnym lub zewnętrznym/zdalnym z dostępnym identyfikatorem URI. Aby uzyskać więcej informacji na temat pliku parametrów, zobacz Tworzenie pliku parametrów usługi Resource Manager.
Aby przekazać lokalny plik parametrów, użyjemy parametru
TemplateParameterFile
w tym samym poleceniu, z którego korzystaliśmy. Najpierw należy jednak utworzyć i zapisać plik parametrów.Ponieważ używamy programu Visual Studio Code z rozszerzeniem Narzędzi usługi Azure Resource Manager, możesz otworzyć zapisany lokalnie szablon usługi ARM i wybrać link Wybierz/utwórz plik parametrów ... .
Wybierz pozycję Nowy w menu, a następnie wybierz pozycję Tylko wymagane parametry. Rozszerzenie tworzy plik parametrów na podstawie aktualnie otwartego szablonu.
Użyj następującego polecenia programu PowerShell z parametrem
TemplateParameterFile
.$parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"} $templateFile="C:\JSON\maintemplate.json" $TemplateParameterFile= "C:\JSON\maintemplate.parameters.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-3-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile ` -TemplateParameterFile $TemplateParameterFile
Po wdrożeniu wyniki powinny wyglądać podobnie do poniższego przykładu.
DeploymentName : DeployLocalTemplate-3-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:54:40 p.m. Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vnetName String VNet-001 costCenterIO String 12345 ownerName String John Smith Outputs : DeploymentDebugLogLevel :
Wdrażanie zewnętrznego lub zdalnego szablonu
W niektórych przypadkach konieczne jest wdrożenie z zewnętrznej lub zdalnej lokalizacji, zamiast z szablonu znajdującego się na komputerze lokalnym. Szablony można przechowywać w repozytorium kontroli źródła (na przykład GitHub). Można je również przechowywać na koncie usługi Azure Storage w celu uzyskania dostępu współdzielonego w organizacji.
Aby wdrożyć szablon zewnętrzny, użyj parametru
TemplateUri
.W następnym ćwiczeniu wdrożysz szablon usługi ARM z repozytorium GitHub. Jest to repozytorium publiczne, dlatego w tym przypadku nie jest wymagany token sygnatury dostępu współdzielonego (SAS). Aby uzyskać szczegółowe informacje dotyczące używania prywatnej lub zabezpieczonej lokalizacji zdalnej, zobacz Wdrażanie szablonu prywatnego z tokenem SAS.
Identyfikator URI szablonu dla tego ćwiczenia jest następujący: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Jest to krótki szablon, który wdraża podstawowe konto magazynu w środowisku piaskownicy.
Polecenie programu PowerShell jest dokładnie takie samo, jak dla szablonu lokalnego. Jedyną różnicą jest to, że parametr
-TemplateUri
zastępuje parametr-TemplateFile
.Użyj poniższego kodu, aby przeprowadzić wdrożenie w podanej piaskownicy:
$parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"} $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-4-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
Wyniki są podobne do poniższego przechwytywania ekranu. Zawierają one szczegółowe informacje dotyczące lokalizacji szablonu.
DeploymentName : DeployLocalTemplate-4-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:56:55 p.m. Mode : Incremental TemplateLink : Uri : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json ContentVersion : 1.0.0.0 Parameters : Name Type Value ==================== ========================= ========== storageAccountType String Standard_LRS location String westus Outputs : Name Type Value ==================== ========================= ========== storageAccountName String storepgxosadmbq77e DeploymentDebugLogLevel :
Uwaga
Ta sekcja została napisana przy użyciu poleceń interfejsu wiersza polecenia platformy Azure w podsystemie Windows Linux Subsystem (WSL2) w systemie Windows 10. Polecenia są takie same, niezależnie od tego, czy korzystasz z interfejsu wiersza polecenia platformy Azure w powłoce PowerShell, CMD, czy Bash. Jednak sposób przywoływania zmiennych może być różny.
Logowanie się do platformy Azure
Z poziomu terminalu w programie Visual Studio Code uruchom następujące polecenie, aby zalogować się na platformie Azure. Uruchomienie tego polecenia spowoduje otwarcie przeglądarki, która umożliwia zalogowanie się do konta.
az login
Po zalogowaniu się w terminalu zostanie wyświetlona lista subskrypcji skojarzonych z kontem w formacie JSON. Jeśli aktywowano piaskownicę, na liście powinna być widoczna subskrypcja Concierge.
Uzyskaj identyfikator subskrypcji. Poniższe polecenie wyświetla listę subskrypcji i ich identyfikatorów. Identyfikator subskrypcji znajduje się w trzeciej kolumnie. Poszukaj subskrypcji
Concierge Subscription
i skopiuj wartość z trzeciej kolumny. Powinien wyglądać mniej więcej tak:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.az account list -o table
Zmień aktywną subskrypcję na subskrypcję Concierge. Pamiętaj, aby zastąpić ciąg
{Your subscription ID}
identyfikatorem subskrypcji Concierge uzyskanym w poprzednim poleceniu.az account set -s {Your subscription ID}
Ustawianie domyślnej grupy zasobów
Musisz teraz ustawić grupę zasobów utworzoną automatycznie w piaskownicy jako domyślną grupę zasobów. Aby wykonać tę operację, najpierw należy uzyskać nazwę grupy zasobów przy użyciu następującego polecenia:
az group list -o table
W tym poleceniu użyj nazwy zasobu uzyskanej z poprzedniego polecenia. (Wygląda to mniej więcej tak: learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) To polecenie umożliwia pominięcie tego parametru z pozostałych poleceń interfejsu wiersza polecenia platformy Azure w tym ćwiczeniu.
Uwaga
Zwykle w przypadku wdrażania szablonu za pomocą polecenia interfejsu wiersza polecenia platformy Azure należy określić nazwę docelowej grupy zasobów. W ćwiczeniu w tym module pomijamy to wymaganie przez ustawienie kontekstu wdrożenia. W następnym kroku określamy nazwę grupy zasobów piaskownicy za pomocą polecenia az configure interfejsu wiersza polecenia platformy Azure.
az configure --defaults group={Resource Group Name}
Wdrażanie szablonu lokalnego
W poniższym ćwiczeniu wdrożysz szablon z komputera lokalnego. W tym miejscu nie jest wymagana nazwa grupy zasobów, która jest zwykle używana podczas wdrażania we własnym środowisku, ponieważ w poprzedniej sekcji zdefiniowaliśmy już domyślną grupę zasobów.
Na początek skopiuj kod następującego szablonu i wklej go do pliku w katalogu lokalnym. Na przykład użyj
C:\JSON\maintemplate.json
lub/mnt/c/Users/you/json/maintemplate.json
.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "VnetName": { "type": "string", "defaultValue": "VNet-001", "metadata": { "description": "Virtual Network Name" } }, "CostCenterIO": { "type": "string", "defaultValue": "12345", "metadata": { "description": "Cost Center IO number for cross billing" } }, "OwnerName": { "type": "string", "defaultValue": "John Smith", "metadata": { "description": "Name of the stakeholder responsible for this resource" } } }, "variables": {}, "resources": [ { "apiVersion": "2018-10-01", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('VnetName')]", "location": "[resourceGroup().location]", "tags": { "CostCenter": "[parameters('CostCenterIO')]", "Owner": "[parameters('OwnerName')]" }, "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "enableVmProtection": false, "enableDdosProtection": false, "subnets": [ { "name": "subnet001", "properties": { "addressPrefix": "10.0.0.0/24" } }, { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ] } } ] }
Po zapisaniu pliku lokalnie możesz użyć polecenia interfejsu wiersza polecenia platformy Azure, aby wdrożyć go na poziomie grupy zasobów, o którym mówiliśmy w ostatniej lekcji. To polecenie to az deployment group create.
Uwaga
W poniższym przykładzie plik szablonu znajduje się w folderze json na dysku głównym w podsystemie Windows Linux Subsystem (WSL2). Dostosuj swoje polecenie w zależności od wybranej powłoki.
templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile
Po zakończeniu wynikowe dane wyjściowe powinny wyglądać podobnie do poniższego przykładu. Aby upewnić się, że wdrożenie zakończyło się pomyślnie, poszukaj wiersza
"provisioningState": "Succeeded"
.{ "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2020-08-19", "location": null, "name": "DeployLocalTemplate-2020-08-19", "properties": { "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd", "debugSetting": null, "dependencies": [], "duration": "PT8.9060761S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/ learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a" } ], "outputs": null, "parameters": { "costCenterIO": { "type": "String", "value": "12345" }, "ownerName": { "type": "String", "value": "John Smith" }, "vnetName": { "type": "String", "value": "VNet-001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Network", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "virtualNetworks" } ] } ], "provisioningState": "Succeeded", "templateHash": "11553431046699679955", "templateLink": null, "timestamp": "2020-08-19T14:47:06.403362+00:00", "validatedResources": null }, "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a", "tags": null, "type": "Microsoft.Resources/deployments" }
Wdrażanie tego samego szablonu lokalnego z wartościami parametrów
W ostatnim ćwiczeniu szablon został wdrożony przy użyciu domyślnych wartości parametrów. Podczas wdrażania lokalnego szablonu usługi ARM może być konieczne przekazanie wartości parametrów. Możesz użyć parametrów śródwierszowych lub pliku parametrów.
W następnym ćwiczeniu przekażesz parametry wbudowane do wdrożenia. Należy podać nazwy parametrów niezależnie od tego, czy używasz parametrów wbudowanych, czy pliku parametrów, przy użyciu az deployment group create
polecenia .
Używając tego samego szablonu co w ostatnim ćwiczeniu, skonstruuj zmienną zawierającą parametry w formacie ciągu JSON dla wymaganych parametrów szablonu.
Uwaga
W poniższym przykładzie plik szablonu znajduje się w folderze json w podsystemie Windows Linux Subsystem (WSL2). Dostosuj swoje polecenie w oparciu o używaną powłokę i system operacyjny.
parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}" templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-2-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile \ --parameters "$parameters"
Wynik wyświetlony po zakończeniu wykonywania polecenia powinien wyglądać podobnie jak na poniższym przykładzie. Aby upewnić się, że polecenie zakończyło się pomyślnie, zobacz sekcję
"parameters"
"provisioningState"
i wartość.{- Finished .. "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2-2020-08-19", "location": null, "name": "DeployLocalTemplate-2-2020-08-19", "properties": { "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee", "debugSetting": null, "dependencies": [], "duration": "PT4.6990388S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a" } ], "outputs": null, "parameters": { "costCenterIO": { "type": "String", "value": "12345" }, "ownerName": { "type": "String", "value": "John Smith" }, "vnetName": { "type": "String", "value": "VNet-001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Network", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "virtualNetworks" } ] } ], "provisioningState": "Succeeded", "templateHash": "11553431046699679955", "templateLink": null, "timestamp": "2020-08-19T16:40:20.249786+00:00", "validatedResources": null }, "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a", "tags": null, "type": "Microsoft.Resources/deployments" }
Zamiast przekazywania parametrów jako wartości śródwierszowych w skrypcie, prostsze może być użycie pliku JSON zawierającego wartości parametrów. Plik parametrów może być plikiem lokalnym lub zewnętrznym/zdalnym z dostępnym identyfikatorem URI. Aby uzyskać więcej informacji na temat pliku parametrów, zobacz Tworzenie pliku parametrów usługi Resource Manager.
Aby przekazać lokalny plik parametrów, użyjemy parametru
--parameters
w tym samym poleceniu, z którego korzystaliśmy. Najpierw należy jednak utworzyć i zapisać plik parametrów.Ponieważ używamy programu Visual Studio Code z rozszerzeniem Narzędzi usługi Azure Resource Manager, możesz otworzyć zapisany lokalnie szablon usługi ARM i wybrać link Wybierz lub utwórz plik parametrów, aby włączyć pełną walidację .
Wybierz pozycję Nowe z menu. Rozszerzenie tworzy plik parametrów na podstawie aktualnie otwartego szablonu.
Użyj poniższego polecenia interfejsu wiersza polecenia platformy Azure z parametrem
--parameters
.Uwaga
W poniższym przykładzie plik szablonu znajduje się w folderze json w podsystemie Windows Linux Subsystem (WSL2). Dostosuj polecenie na podstawie używanej powłoki i systemu operacyjnego.
templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json templateparameterfile=/mnt/c/Users/<UserName>/json/maintemplate.parameters.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-3-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile \ --parameters $templateparameterfile
Po wdrożeniu wyniki houdl wyglądają jak w poniższym przykładzie.
{- Finished .. "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19", "location": null, "name": "DeployLocalTemplate-3-2020-08-19", "properties": { "correlationId": "cccc2222-dd33-4444-55ee-666666ffffff", "debugSetting": null, "dependencies": [], "duration": "PT4.2058912S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b" } ], "outputs": null, "parameters": { "costCenterIO": { "type": "String", "value": "12345" }, "ownerName": { "type": "String", "value": "John Smith" }, "vnetName": { "type": "String", "value": "VNet-001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Network", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "virtualNetworks" } ] } ], "provisioningState": "Succeeded", "templateHash": "11553431046699679955", "templateLink": null, "timestamp": "2020-08-19T20:42:44.069215+00:00", "validatedResources": null }, "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b", "tags": null, "type": "Microsoft.Resources/deployments" }
Wdrażanie zewnętrznego lub zdalnego szablonu
W niektórych przypadkach konieczne jest wdrożenie z zewnętrznej lub zdalnej lokalizacji, zamiast z szablonu znajdującego się na komputerze lokalnym. Szablony można przechowywać w repozytorium kontroli źródła (na przykład GitHub). Można je również przechowywać na koncie usługi Azure Storage w celu uzyskania dostępu współdzielonego w organizacji.
- Aby wdrożyć szablon zewnętrzny, użyj parametru
--template-uri
.
W tym ćwiczeniu wdrożysz szablon usługi ARM z repozytorium GitHub. Jest to repozytorium publiczne, dlatego w tym przypadku nie jest wymagany token sygnatury dostępu współdzielonego (SAS). Aby uzyskać szczegółowe informacje dotyczące używania prywatnej lub zabezpieczonej lokalizacji zdalnej, zobacz Wdrażanie szablonu prywatnego z tokenem SAS.
Identyfikator URI szablonu dla tego ćwiczenia jest następujący: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Jest to krótki szablon, który wdraża podstawowe konto magazynu w środowisku piaskownicy.
Polecenie interfejsu wiersza polecenia platformy Azure jest dokładnie takie samo, jak dla szablonu lokalnego. Jedyną różnicą jest to, że parametr
--template-uri
zastępuje parametr--template-file
.Użyj poniższego kodu, aby przeprowadzić wdrożenie w podanej piaskownicy:
parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}" today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-4-"$today az deployment group create \ --name $deploymentname \ --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
Wyniki są podobne do poniższego bloku kodu. Zawierają one szczegółowe informacje dotyczące lokalizacji szablonu w sekcji
"templateLink"
. Pokazują również, czy wdrożenie zakończyło się pomyślnie w"provisioningState"
sekcji .{- Finished .. "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-4-2020-08-19", "location": null, "name": "DeployLocalTemplate-4-2020-08-19", "properties": { "correlationId": "dddd3333-ee44-5555-66ff-777777aaaaaa", "debugSetting": null, "dependencies": [], "duration": "PT24.3286124S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4", "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b" } ], "outputs": { "storageAccountName": { "type": "String", "value": "store7zk7eyqew54l4" } }, "parameters": { "location": { "type": "String", "value": "westus" }, "storageAccountType": { "type": "String", "value": "Standard_LRS" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Storage", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "storageAccounts" } ] } ], "provisioningState": "Succeeded", "templateHash": "12600309984865991765", "templateLink": { "contentVersion": "1.0.0.0", "id": null, "relativePath": null, "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json" }, "timestamp": "2020-08-19T20:53:36.759312+00:00", "validatedResources": null }, "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b", "tags": null, "type": "Microsoft.Resources/deployments" }