Oefening: uw ARM-sjablonen implementeren
Notitie
De eerste keer dat u een sandbox activeert en de voorwaarden accepteert, wordt uw Microsoft-account gekoppeld aan een nieuwe Azure-map met de naam Microsoft Learn-sandbox. U wordt toegevoegd aan een speciaal abonnement met de naam Concierge-abonnement.
Hier implementeert u een ARM-sjabloon (Azure Resource Manager) vanaf uw computer en vanaf een GitHub-opslagplaats door een URI op te geven.
Belangrijk
In deze oefening wordt Hulpprogramma's van Azure Resource Manager voor Visual Studio Code gebruikt. Zorg ervoor dat u deze extensie installeert in Visual Studio Code.
Uw omgeving instellen met het Microsoft Learn-sandbox-abonnement
Als u elke implementatie in deze eenheid wilt uitvoeren, moet u zich aanmelden bij uw Azure-account vanuit de Visual Studio Code-terminal.
Zorg ervoor dat u zich aanmeldt bij hetzelfde account waarmee u de sandbox hebt geactiveerd.
Aanmelden bij Azure
Voer in de terminal in Visual Studio Code de volgende opdracht uit om u aan te melden bij Azure. Als u deze opdracht uitvoert, wordt een browser geopend waarmee u zich kunt aanmelden bij uw account.
Connect-AzAccount
Wanneer u bent aangemeld, ziet u een lijst met de abonnementen die zijn gekoppeld aan dit account in de terminal. Als u de sandbox hebt geactiveerd, wordt het Concierge-abonnement in deze lijst weergegeven.
Controleer de naam van het abonnement. De volgende opdracht bevat uw abonnementen, namen en hun id's in een eenvoudig te lezen tabelindeling.
Concierge Subscription
Zoek naar .Get-AzSubscription
Wijzig uw actieve abonnement naar het Concierge-abonnement.
$context = Get-AzSubscription -SubscriptionName "Concierge Subscription" | Set-AzContext
De standaardresourcegroep instellen
Stel nu de resourcegroep die voor u is gemaakt in de sandbox in als standaardresourcegroep. Als u deze bewerking wilt uitvoeren, moet u eerst de naam van de resourcegroep ophalen door de volgende opdracht uit te voeren.
Get-AzResourceGroup | where-object ResourceGroupName -match "learn" | Set-AzDefault
Gebruik in deze opdracht de resourcenaam die u hebt opgehaald uit de vorige opdracht. (Het ziet er ongeveer als volgt uit learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) Met deze opdracht kunt u die parameter weglaten uit de rest van de Azure PowerShell-opdrachten in deze oefening.
Notitie
Wanneer u normaal gesproken een PowerShell- of Azure CLI-opdracht uitvoert om een sjabloon te implementeren, moet u de naam van de doelresourcegroep opgeven. Als u de vorige opdracht uitvoert, hebben we de context van de implementatie ingesteld. We hebben de naam van de sandbox-resourcegroep opgegeven door de Opdracht Set-AzDefault PowerShell uit te voeren:
Set-AzDefault -ResourceGroupName {Resource Group Name}
Een lokale sjabloon implementeren
In de volgende oefening implementeert u een sjabloon vanaf uw lokale computer. De naam van de resourcegroep die normaal gesproken wordt gebruikt bij een implementatie in uw eigen omgeving is hier niet nodig, omdat we de standaard resourcegroep al hebben gedefinieerd in de vorige sectie.
Kopieer en plak om te beginnen de inhoud van de volgende sjablooncode in een bestand in een lokale map. Gebruik bijvoorbeeld
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" } } ] } } ] }
Nadat u het bestand lokaal hebt opgeslagen, kunt u de PowerShell-opdracht gebruiken om het te implementeren op het niveau van de resourcegroep waarover we in de laatste les hebben gesproken. Gebruik namelijk de opdracht New-AzResourceGroupDeployment .
$templateFile="C:\JSON\maintemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile
Nadat deze is voltooid, moet u resultaten hebben zoals in dit voorbeeld.
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 :
Dezelfde lokale sjabloon met parameterwaarden implementeren
In de laatste oefening hebt u uw sjabloon geïmplementeerd door de standaardwaarde van de parameter te gebruiken. Wanneer u een lokale ARM-sjabloon implementeert, moet u mogelijk parameterwaarden doorgeven. U kunt zowel inlineparameters als een parameterbestand gebruiken.
Als u inline-parameters wilt doorgeven aan uw-implementatie, moet u de namen van de parameter opgeven met de cmdlet New-AzResourceGroupDeployment
. In de volgende oefening geeft u de parameters door als inlineparameters en als een parameterbestand.
Met behulp van dezelfde sjabloon als de laatste oefening maakt u een hash-tabel die de waarden voor de vereiste sjabloonparameters bevat.
$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
Zodra dit is voltooid, moet u resultaten krijgen die er ongeveer zo uitzien:
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 :
In plaats van parameters als inlinewaarden in uw script door te geven, is het wellicht eenvoudiger om een JSON-bestand te gebruiken dat de parameterwaarden bevat. Het parameterbestand kan een lokaal bestand of een extern bestand met een toegankelijke URI zijn. Zie Een Resource Manager-parameterbestand maken voor meer informatie over het parameterbestand.
Gebruik voor het doorgeven van een lokaal parameterbestand de parameter
TemplateParameterFile
in dezelfde opdracht die eerder is gebruikt. Maar eerst moet u uw parameterbestand maken en opslaan.Omdat we Visual Studio Code gebruiken met de extensie Azure Resource Manager Tools, kunt u de ARM-sjabloon openen die u lokaal hebt opgeslagen en de koppeling Parameterbestand selecteren/maken selecteren... selecteren.
Selecteer Nieuw in het menu en selecteer vervolgens Alleen vereiste parameters. De extensie maakt een parameterbestand op basis van de momenteel geopende sjabloon.
Gebruik de volgende PowerShell-opdracht met de
TemplateParameterFile
parameter.$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
Na de implementatie moeten uw resultaten eruitzien zoals in het volgende voorbeeld.
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 :
Een externe sjabloon implementeren
In sommige gevallen moet u implementaties uitvoeren vanaf een externe locatie in plaats van een sjabloon op uw lokale computer. U kunt sjablonen opslaan in een opslagplaats voor broncodebeheer (zoals GitHub). U kunt de sjablonen ook opslaan in een Azure-opslagaccount voor gedeelde toegang in uw organisatie.
Als u een externe sjabloon wilt implementeren, gebruikt u de
TemplateUri
-parameter.In de volgende oefening gaat u een ARM-sjabloon implementeren vanuit een GitHub-opslagplaats. De opslagplaats is openbaar, zodat u zich geen zorgen hoeft te maken over het implementeren van een sjabloon waarvoor een SAS-token (Shared Access Signature) is vereist. Zie Persoonlijke sjabloon met SAS-token implementeren voor details over het gebruik van een persoonlijke of beveiligde locatie op afstand.
De sjabloon-URI voor de oefening is https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Het is een korte sjabloon waarmee een basisopslagaccount in uw sandbox-omgeving wordt geïmplementeerd.
De PowerShell-opdracht is exact gelijk aan die voor een lokale sjabloon. Het enige verschil is dat de parameter
-TemplateUri
de parameter-TemplateFile
vervangt.Gebruik de volgende code om implementaties uit te voeren in de beschikbare sandbox:
$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
De resultaten zijn hetzelfde als de volgende schermopname. Deze bieden een overzicht van de locatiegegevens van de sjabloon.
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 :
Notitie
Deze sectie is geschreven met behulp van de Azure CLI-opdrachten in het Windows Linux-subsysteem (WSL2) in Windows 10. De opdrachten zijn hetzelfde, ongeacht of u de Azure CLI in een PowerShell, CMD of Bash-shell gebruikt. De manier waarop met de variabelen wordt omgegaan, kan echter verschillen.
Aanmelden bij Azure
Voer in de terminal in Visual Studio Code de volgende opdracht uit om u aan te melden bij Azure. Als u deze opdracht uitvoert, wordt een browser geopend waarmee u zich kunt aanmelden bij uw account.
az login
Wanneer u bent aangemeld, ziet u een JSON-lijst met de abonnementen die zijn gekoppeld aan het account in de terminal. Als u de sandbox hebt geactiveerd, wordt het Concierge-abonnement in deze lijst weergegeven.
Verkrijg de abonnements-id. De volgende opdracht bevat uw abonnementen en hun id's. De abonnements-id is de derde kolom. Zoek naar
Concierge Subscription
en kopieer de derde kolom. Het zou er ongeveer zo uit moetencf49fbbc-217c-4eb6-9eb5-a6a6c68295a0
zien.az account list -o table
Wijzig uw actieve abonnement naar het Concierge-abonnement. Vervang
{Your subscription ID}
door de id van het Concierge-abonnement dat u met de vorige opdracht hebt opgehaald.az account set -s {Your subscription ID}
De standaardresourcegroep instellen
Stel nu de resourcegroep die voor u is gemaakt in de sandbox in als standaardresourcegroep. Als u deze bewerking wilt uitvoeren, moet u eerst de naam van de resourcegroep ophalen met behulp van de volgende opdracht:
az group list -o table
Gebruik in deze opdracht de resourcenaam die u hebt opgehaald uit de vorige opdracht. (Het ziet er ongeveer als volgt uit learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) Met deze opdracht kunt u die parameter weglaten uit de rest van de Azure CLI-opdrachten in deze oefening.
Notitie
Normaal gesproken moet u wanneer u een Azure CLI-opdracht gebruikt voor het implementeren van een sjabloon de naam van de doelresourcegroep opgeven. In de oefening in deze module omzeilen we deze vereiste door de context van onze implementatie in te stellen. De naam van de resourcegroep voor de sandbox wordt in de volgende stap opgegeven met behulp van de Azure CLI-opdracht az configure.
az configure --defaults group={Resource Group Name}
Een lokale sjabloon implementeren
In de volgende oefening implementeert u een sjabloon vanaf uw lokale computer. De naam van de resourcegroep die normaal gesproken wordt gebruikt bij een implementatie in uw eigen omgeving is hier niet nodig, omdat we de standaard resourcegroep al hebben gedefinieerd in de vorige sectie.
Kopieer en plak om te beginnen de inhoud van de volgende sjablooncode in een bestand in een lokale map. Gebruik bijvoorbeeld
C:\JSON\maintemplate.json
of/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" } } ] } } ] }
Nadat u het bestand lokaal hebt opgeslagen, kunt u de Azure CLI-opdracht gebruiken om het te implementeren op het niveau van de resourcegroep waarover we in de laatste les hebben gesproken. Gebruik az deployment group create.
Notitie
In het volgende voorbeeld bevindt het sjabloonbestand zich in een json-map op het basisstation in het Windows Linux-subsysteem (WSL2). Pas uw opdracht aan op basis van de door u gekozen shell.
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
Nadat de uitvoer is voltooid, moet de resulterende uitvoer eruitzien als in het volgende voorbeeld. Als u er zeker van wilt zijn dat uw implementatie is geslaagd, kijkt u naar de regel
"provisioningState": "Succeeded"
.{ "id": "/subscriptions/082d0d73-f197-45c5-9884-581c8f0ce102/resourceGroups/learn-e692001a-b605-48d4-97bd-7c05669db9dd/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2020-08-19", "location": null, "name": "DeployLocalTemplate-2020-08-19", "properties": { "correlationId": "6ad759d5-cda5-4a71-a772-05a03d983c6f", "debugSetting": null, "dependencies": [], "duration": "PT8.9060761S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/082d0d73-f197-45c5-9884-581c8f0ce102/resourceGroups/ learn-e692001a-b605-48d4-97bd-7c05669db9dd/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-e692001a-b605-48d4-97bd-7c05669db9dd" } ], "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-e692001a-b605-48d4-97bd-7c05669db9dd", "tags": null, "type": "Microsoft.Resources/deployments" }
Dezelfde lokale sjabloon met parameterwaarden implementeren
In de laatste oefening hebt u uw sjabloon geïmplementeerd door de standaardwaarde van de parameter te gebruiken. Wanneer u een lokale ARM-sjabloon implementeert, moet u mogelijk parameterwaarden doorgeven. U kunt zowel inlineparameters als een parameterbestand gebruiken.
In de volgende oefening geeft u inlineparameters door aan uw implementatie. U moet de namen van de parameters opgeven, ongeacht of u inlineparameters of een parameterbestand gebruikt, met behulp van de az deployment group create
opdracht.
Met behulp van dezelfde sjabloon als de laatste oefening maakt u een variabele die de parameters in een JSON-tekenreeksindeling voor de vereiste sjabloonparameters bevat.
Notitie
In het volgende voorbeeld bevindt het sjabloonbestand zich in een json-map in het Windows Linux-subsysteem (WSL2). Pas uw opdracht aan op basis van de door u gekozen shell en het besturingssysteem.
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"
Nadat de bewerking is voltooid, moet u resultaten hebben die op het volgende voorbeeld lijken. Zie de
"parameters"
sectie en de"provisioningState"
waarde om ervoor te zorgen dat de opdracht is geslaagd.{- Finished .. "id": "/subscriptions/082d0d73-f197-45c5-9884-581c8f0ce102/resourceGroups/learn-e692001a-b605-48d4-97bd-7c05669db9dd/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2-2020-08-19", "location": null, "name": "DeployLocalTemplate-2-2020-08-19", "properties": { "correlationId": "edb2992e-08be-4ec2-940e-df23b1c09453", "debugSetting": null, "dependencies": [], "duration": "PT4.6990388S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/082d0d73-f197-45c5-9884-581c8f0ce102/resourceGroups/learn-e692001a-b605-48d4-97bd-7c05669db9dd/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-e692001a-b605-48d4-97bd-7c05669db9dd" } ], "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-e692001a-b605-48d4-97bd-7c05669db9dd", "tags": null, "type": "Microsoft.Resources/deployments" }
In plaats van parameters als inlinewaarden in uw script door te geven, is het wellicht eenvoudiger om een JSON-bestand te gebruiken dat de parameterwaarden bevat. Het parameterbestand kan een lokaal bestand of een extern bestand met een toegankelijke URI zijn. Zie Een Resource Manager-parameterbestand maken voor meer informatie over het parameterbestand.
Gebruik voor het doorgeven van een lokaal parameterbestand de parameter
--parameters
in dezelfde opdracht die eerder is gebruikt. Maar eerst moet u uw parameterbestand maken en opslaan.Omdat we Visual Studio Code gebruiken met de extensie Azure Resource Manager Tools, kunt u de ARM-sjabloon openen die u lokaal hebt opgeslagen en selecteert u het parameterbestand Selecteren of maken om een volledige validatiekoppeling in te schakelen.
Selecteer Nieuw in het menu. De extensie maakt een parameterbestand op basis van de momenteel geopende sjabloon.
Gebruik de volgende Azure CLI-opdracht met de parameter
--parameters
.Notitie
In het volgende voorbeeld bevindt het sjabloonbestand zich in een json-map in het Windows Linux-subsysteem (WSL2). Pas uw opdracht aan op basis van de gekozen shell en het gekozen besturingssysteem.
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
Na de implementatie zien uw resultaten er als volgt uit.
{- Finished .. "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19", "location": null, "name": "DeployLocalTemplate-3-2020-08-19", "properties": { "correlationId": "2a668f55-d8d0-48ac-862f-7170b48c02b6", "debugSetting": null, "dependencies": [], "duration": "PT4.2058912S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b" } ], "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-159e2742-d3a1-4e71-84a3-16e19830242b", "tags": null, "type": "Microsoft.Resources/deployments" }
Een externe sjabloon implementeren
In sommige gevallen moet u implementaties uitvoeren vanaf een externe locatie in plaats van een sjabloon op uw lokale computer. U kunt sjablonen opslaan in een opslagplaats voor broncodebeheer (zoals GitHub). U kunt de sjablonen ook opslaan in een Azure-opslagaccount voor gedeelde toegang in uw organisatie.
- Als u een externe sjabloon wilt implementeren, gebruikt u de
--template-uri
-parameter.
In deze oefening implementeert u een ARM-sjabloon vanuit een GitHub-opslagplaats. De opslagplaats is openbaar, zodat u zich geen zorgen hoeft te maken over het implementeren van een sjabloon waarvoor een SAS-token (Shared Access Signature) is vereist. Zie Persoonlijke sjabloon met SAS-token implementeren voor details over het gebruik van een persoonlijke of beveiligde locatie op afstand.
De sjabloon-URI voor de oefening is https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Het is een korte sjabloon waarmee een basisopslagaccount in uw sandbox-omgeving wordt geïmplementeerd.
De Azure CLI-opdracht is exact gelijk aan die voor een lokale sjabloon. Het enige verschil is dat de parameter
--template-uri
de parameter--template-file
vervangt.Gebruik de volgende code om implementaties uit te voeren in de beschikbare sandbox:
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
De resultaten zijn hetzelfde als het volgende codeblok. Deze bieden een overzicht van de sjabloonlocatie in het gedeelte
"templateLink"
. Ze laten ook zien of de implementatie is geslaagd in de"provisioningState"
sectie.{- Finished .. "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-4-2020-08-19", "location": null, "name": "DeployLocalTemplate-4-2020-08-19", "properties": { "correlationId": "2ccc49de-9d46-4375-a25d-19ec10daf88b", "debugSetting": null, "dependencies": [], "duration": "PT24.3286124S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/learn-159e2742-d3a1-4e71-84a3-16e19830242b/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4", "resourceGroup": "learn-159e2742-d3a1-4e71-84a3-16e19830242b" } ], "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-159e2742-d3a1-4e71-84a3-16e19830242b", "tags": null, "type": "Microsoft.Resources/deployments" }