Øvelse – Føj et installationsscript til en ARM-skabelon
Vigtig
Du skal bruge dit eget Azure-abonnement for at køre denne øvelse, og du kan pådrage dig gebyrer. Hvis du ikke allerede har et Azure-abonnement, kan du oprette en gratis konto, før du begynder.
Som en del af teamets programinstallationsproces skal du oprette en lagerkonto og placere en fil i bloblageret, før programmet kan læses. Indtil nu har du kopieret filen manuelt, hver gang der er konfigureret et nyt miljø. Du beslutter dig for at bruge et installationsscript til at automatisere dette trin som en del af processen til oprettelse af miljøet.
I denne øvelse skal du tage en eksisterende AZURE Resource Manager-skabelon (ARM) og tilføje et nyt installationsscript.
Under processen skal du:
- Opret en startskabelon.
- Tilføj forudsætningerne for udrulningsscripts, herunder en brugertildelt administreret identitet og rolletildeling.
- Tilføj et installationsscript.
- Udrul skabelonen, og bekræft resultatet.
I denne øvelse bruges Azure Resource Manager Tools til Visual Studio Code. Sørg for at installere denne udvidelse i Visual Studio Code.
I denne øvelse bruges udvidelsen Bicep til Visual Studio Code. Sørg for at installere denne udvidelse i Visual Studio Code.
Opret startskabelonen
Du starter med en eksisterende skabelon, som dit team har brugt. Skabelonen opretter lagerkontoen, konfigurerer blobtjenester og kræver HTTPS og opretter blobobjektbeholderen til dine konfigurationsfiler.
Åbn Visual Studio Code.
Opret en ny fil med navnet azuredeploy.json.
Gem den tomme fil, så Visual Studio Code indlæser ARM-skabelonværktøjet.
Du kan enten vælge Filer>Gem som eller vælge Ctrl+S- i Windows (⌘+S på macOS). Husk, hvor du har gemt filen. Det kan f.eks. være, at du vil oprette en scripts mappe, hvor den skal gemmes.
Kopiér følgende startskabelon til azuredeploy.json.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.1", "apiProfile": "", "parameters": {}, "variables": { "storageAccountName": "[concat('storage', uniqueString(resourceGroup().id))]", "storageBlobContainerName": "config" }, "functions": [], "resources": [ { "name": "[variables('storageAccountName')]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2023-01-01", "tags": { "displayName": "[variables('storageAccountName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Standard_LRS", "tier": "Standard" }, "properties": { "allowBlobPublicAccess": true, "encryption": { "services": { "blob": { "enabled": true } }, "keySource": "Microsoft.Storage" }, "supportsHttpsTrafficOnly": true } }, { "type": "Microsoft.Storage/storageAccounts/blobServices", "apiVersion": "2019-04-01", "name": "[concat(variables('storageAccountName'), '/default')]", "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" ] }, { "type": "Microsoft.Storage/storageAccounts/blobServices/containers", "apiVersion": "2019-04-01", "name": "[concat(variables('storageAccountName'),'/default/',variables('storageBlobContainerName'))]", "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storageAccountName'), 'default')]", "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" ], "properties": { "publicAccess": "Blob" } } ] }
Gem skabelonen.
Åbn Visual Studio Code.
Opret en ny fil med navnet main.bicep.
Gem den tomme fil, så Visual Studio Code indlæser Bicep-værktøjet.
Du kan enten vælge Filer>Gem som eller vælge Ctrl+S- i Windows (⌘+S på macOS). Husk, hvor du har gemt filen. Det kan f.eks. være, at du vil oprette en scripts mappe for at gemme den i.
Kopiér følgende startskabelon til main.bicep.
var storageAccountName = 'storage${uniqueString(resourceGroup().id)}' var storageBlobContainerName = 'config' resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = { name: storageAccountName tags: { displayName: storageAccountName } location: resourceGroup().location kind: 'StorageV2' sku: { name: 'Standard_LRS' tier: 'Standard' } properties: { allowBlobPublicAccess: true encryption: { services: { blob: { enabled: true } } keySource: 'Microsoft.Storage' } supportsHttpsTrafficOnly: true } resource blobService 'blobServices' existing = { name: 'default' } } resource blobContainer 'Microsoft.Storage/storageAccounts/blobServices/containers@2019-04-01' = { parent: storageAccount::blobService name: storageBlobContainerName properties: { publicAccess: 'Blob' } }
Gem skabelonen.
Tilføj en brugertildelt administreret identitet
Derefter skal du oprette en brugertildelt administreret identitet. På grund af tilgangen infrastruktur som kode kan du oprette identiteten i skabelonen.
Rediger afsnittet
variables
i azuredeploy.json, der skal medtages:"userAssignedIdentityName": "configDeployer",
Rediger afsnittet
resources
i azuredeploy.json, der skal medtages:{ "type": "Microsoft.ManagedIdentity/userAssignedIdentities", "apiVersion": "2018-11-30", "name": "[variables('userAssignedIdentityName')]", "location": "[resourceGroup().location]" }
Gem skabelonen.
Under variabeldefinitionerne i main.bicepskal du tilføje:
var userAssignedIdentityName = 'configDeployer'
Under ressourcedefinitionerne skal du tilføje:
resource userAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' = { name: userAssignedIdentityName location: resourceGroup().location }
Gem skabelonen.
Angiv bidragyderrollen for den administrerede identitet
Nu, hvor du har defineret en administreret identitet, kan du tildele den en rolle med rettigheder til ressourcegruppen. Du skal tildele den rollen bidragyder . Du identificerer en rolle ved hjælp af rolledefinitions-id'et, som er et GUID. Rollen bidragyder er indbygget i Azure, så rolledefinitions-id'et dokumenteres.
Rolletildelingen skal også have et GUID-navn. Du kan bruge funktionen guid
til at oprette et GUID, der er entydigt for ressourcegruppen og rollenavnet.
Rediger afsnittet
variables
i azuredeploy.json, der skal medtages:"roleAssignmentName": "[guid(concat(resourceGroup().id, 'contributor'))]", "contributorRoleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
Rediger afsnittet
resources
i azuredeploy.json, der skal medtages:{ "type": "Microsoft.Authorization/roleAssignments", "apiVersion": "2020-04-01-preview", "name": "[variables('roleAssignmentName')]", "dependsOn": [ "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('userAssignedIdentityName'))]" ], "properties": { "roleDefinitionId": "[variables('contributorRoleDefinitionId')]", "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('userAssignedIdentityName')), '2015-08-31-preview').principalId]", "scope": "[resourceGroup().id]", "principalType": "ServicePrincipal" } }
Gem skabelonen.
Under variabeldefinitionerne i main.bicepskal du tilføje:
var roleAssignmentName = guid(resourceGroup().id, 'contributor') var contributorRoleDefinitionId = resourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
Under ressourcedefinitionerne skal du tilføje:
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = { name: roleAssignmentName properties: { roleDefinitionId: contributorRoleDefinitionId principalId: userAssignedIdentity.properties.principalId principalType: 'ServicePrincipal' } }
Gem skabelonen.
Opret installationsscriptet
Nu har du alle forudsætningerne for installationsscriptet. Du starter med de fælles værdier, som installationsscriptet skal bruge. Der er to afhængigheder, rolletildelingen og bloblagerobjektbeholderen. Scriptet skal bruge begge disse, før det kan køres.
Rediger afsnittet
variables
i azuredeploy.json, der skal medtages:"deploymentScriptName": "CopyConfigScript"
Rediger afsnittet
resources
i azuredeploy.json, der skal medtages:{ "type": "Microsoft.Resources/deploymentScripts", "apiVersion": "2020-10-01", "name": "[variables('deploymentScriptName')]", "location": "[resourceGroup().location]", "kind": "AzurePowerShell", "dependsOn": [ "[resourceId('Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]", "[resourceId('Microsoft.Storage/storageAccounts/blobServices/containers', variables('storageAccountName'), 'default', variables('storageBlobContainerName'))]" ], "identity": { "type": "UserAssigned", "userAssignedIdentities": { "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities',variables('userAssignedIdentityName'))]": {} } } }
Føj en
properties
sektion til ressourcen for at definere scriptet og de andre påkrævede værdier."properties": { "azPowerShellVersion": "3.0", "scriptContent": " Invoke-RestMethod -Uri 'https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/mslearn-arm-deploymentscripts-sample/appsettings.json' -OutFile 'appsettings.json' $storageAccount = Get-AzStorageAccount -ResourceGroupName 'learndeploymentscript_exercise_1' | Where-Object { $_.StorageAccountName -like 'storage*' } $blob = Set-AzStorageBlobContent -File 'appsettings.json' -Container 'config' -Blob 'appsettings.json' -Context $StorageAccount.Context $DeploymentScriptOutputs = @{} $DeploymentScriptOutputs['Uri'] = $blob.ICloudBlob.Uri $DeploymentScriptOutputs['StorageUri'] = $blob.ICloudBlob.StorageUri ", "retentionInterval": "P1D" }
Gem skabelonen.
Under variabeldefinitionerne i main.bicepskal du tilføje:
var deploymentScriptName = 'CopyConfigScript'
Under ressourcedefinitionerne skal du tilføje:
resource deploymentScript 'Microsoft.Resources/deploymentScripts@2020-10-01' = { name: deploymentScriptName location: resourceGroup().location kind: 'AzurePowerShell' identity: { type: 'UserAssigned' userAssignedIdentities: { '${userAssignedIdentity.id}': {} } } dependsOn: [ roleAssignment blobContainer ] }
Føj en
properties
sektion til ressourcen for at definere scriptet og de andre påkrævede værdier.properties: { azPowerShellVersion: '3.0' scriptContent: ''' Invoke-RestMethod -Uri 'https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/mslearn-arm-deploymentscripts-sample/appsettings.json' -OutFile 'appsettings.json' $storageAccount = Get-AzStorageAccount -ResourceGroupName 'learndeploymentscript_exercise_1' | Where-Object { $_.StorageAccountName -like 'storage*' } $blob = Set-AzStorageBlobContent -File 'appsettings.json' -Container 'config' -Blob 'appsettings.json' -Context $storageAccount.Context $DeploymentScriptOutputs = @{} $DeploymentScriptOutputs['Uri'] = $blob.ICloudBlob.Uri $DeploymentScriptOutputs['StorageUri'] = $blob.ICloudBlob.StorageUri ''' retentionInterval: 'P1D' }
Gem skabelonen.
Tilføj et skabelonoutput
Nu, hvor du har et installationsscript, der uploader en fil til Azure Blob Storage, skal du muligvis referere til denne filplacering i senere automatisering. (Måske skal du køre en test for at validere, at filen er der, hvor du mener, at den skal være).
Efter afsnittet resources
i ARM-skabelonen skal du tilføje et output, der refererer til URI'en for filen som rapporteret af installationsscriptet.
"outputs": {
"fileUri": {
"type": "string",
"value": "[reference(variables('deploymentScriptName')).outputs.Uri]"
}
}
Nederst i filen skal du efter ressourcedefinitionerne tilføje et output, der refererer til URI'en for filen som rapporteret af installationsscriptet.
output fileUri string = deploymentScript.properties.outputs.Uri
Bekræft skabelonen
Skabelonen skal se ud som følger:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"apiProfile": "",
"parameters": {},
"variables": {
"storageAccountName": "[concat('storage', uniqueString(resourceGroup().id))]",
"storageBlobContainerName": "config",
"userAssignedIdentityName": "configDeployer",
"roleAssignmentName": "[guid(concat(resourceGroup().id, 'contributor'))]",
"contributorRoleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"deploymentScriptName": "CopyConfigScript"
},
"functions": [],
"resources": [
{
"name": "[variables('storageAccountName')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"tags": {
"displayName": "[variables('storageAccountName')]"
},
"location": "[resourceGroup().location]",
"kind": "StorageV2",
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"properties": {
"allowBlobPublicAccess": true,
"encryption": {
"services": {
"blob": {
"enabled": true
}
},
"keySource": "Microsoft.Storage"
},
"supportsHttpsTrafficOnly": true
}
},
{
"type": "Microsoft.Storage/storageAccounts/blobServices",
"apiVersion": "2019-04-01",
"name": "[concat(variables('storageAccountName'), '/default')]",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
]
},
{
"type": "Microsoft.Storage/storageAccounts/blobServices/containers",
"apiVersion": "2019-04-01",
"name": "[concat(variables('storageAccountName'),'/default/',variables('storageBlobContainerName'))]",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storageAccountName'), 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
],
"properties": {
"publicAccess": "Blob"
}
},
{
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"apiVersion": "2018-11-30",
"name": "[variables('userAssignedIdentityName')]",
"location": "[resourceGroup().location]"
},
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2020-04-01-preview",
"name": "[variables('roleAssignmentName')]",
"dependsOn": [ "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('userAssignedIdentityName'))]" ],
"properties": {
"roleDefinitionId": "[variables('contributorRoleDefinitionId')]",
"principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('userAssignedIdentityName')), '2015-08-31-preview').principalId]",
"scope": "[resourceGroup().id]",
"principalType": "ServicePrincipal"
}
},
{
"type": "Microsoft.Resources/deploymentScripts",
"apiVersion": "2020-10-01",
"name": "[variables('deploymentScriptName')]",
"location": "[resourceGroup().location]",
"kind": "AzurePowerShell",
"dependsOn": [
"[resourceId('Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]",
"[resourceId('Microsoft.Storage/storageAccounts/blobServices/containers', variables('storageAccountName'), 'default', variables('storageBlobContainerName'))]"
],
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities',variables('userAssignedIdentityName'))]": {}
}
},
"properties": {
"azPowerShellVersion": "3.0",
"scriptContent": "
Invoke-RestMethod -Uri 'https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/mslearn-arm-deploymentscripts-sample/appsettings.json' -OutFile 'appsettings.json'
$storageAccount = Get-AzStorageAccount -ResourceGroupName 'learndeploymentscript_exercise_1' | Where-Object { $_.StorageAccountName -like 'storage*' }
$blob = Set-AzStorageBlobContent -File 'appsettings.json' -Container 'config' -Blob 'appsettings.json' -Context $StorageAccount.Context
$DeploymentScriptOutputs = @{}
$DeploymentScriptOutputs['Uri'] = $blob.ICloudBlob.Uri
$DeploymentScriptOutputs['StorageUri'] = $blob.ICloudBlob.StorageUri
",
"retentionInterval": "P1D"
}
}
],
"outputs": {
"fileUri": {
"type": "string",
"value": "[reference(variables('deploymentScriptName')).outputs.Uri]"
}
}
}
var storageAccountName = 'storage${uniqueString(resourceGroup().id)}'
var storageBlobContainerName = 'config'
var userAssignedIdentityName = 'configDeployer'
var roleAssignmentName = guid(resourceGroup().id, 'contributor')
var contributorRoleDefinitionId = resourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
var deploymentScriptName = 'CopyConfigScript'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: storageAccountName
tags: {
displayName: storageAccountName
}
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
tier: 'Standard'
}
properties: {
allowBlobPublicAccess: true
encryption: {
services: {
blob: {
enabled: true
}
}
keySource: 'Microsoft.Storage'
}
supportsHttpsTrafficOnly: true
}
resource blobService 'blobServices' existing = {
name: 'default'
}
}
resource blobContainer 'Microsoft.Storage/storageAccounts/blobServices/containers@2019-04-01' = {
parent: storageAccount::blobService
name: storageBlobContainerName
properties: {
publicAccess: 'Blob'
}
}
resource userAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' = {
name: userAssignedIdentityName
location: resourceGroup().location
}
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
name: roleAssignmentName
properties: {
roleDefinitionId: contributorRoleDefinitionId
principalId: userAssignedIdentity.properties.principalId
principalType: 'ServicePrincipal'
}
}
resource deploymentScript 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
name: deploymentScriptName
location: resourceGroup().location
kind: 'AzurePowerShell'
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${userAssignedIdentity.id}': {}
}
}
properties: {
azPowerShellVersion: '3.0'
scriptContent: '''
Invoke-RestMethod -Uri 'https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/mslearn-arm-deploymentscripts-sample/appsettings.json' -OutFile 'appsettings.json'
$storageAccount = Get-AzStorageAccount -ResourceGroupName 'learndeploymentscript_exercise_1' | Where-Object { $_.StorageAccountName -like 'storage*' }
$blob = Set-AzStorageBlobContent -File 'appsettings.json' -Container 'config' -Blob 'appsettings.json' -Context $storageAccount.Context
$DeploymentScriptOutputs = @{}
$DeploymentScriptOutputs['Uri'] = $blob.ICloudBlob.Uri
$DeploymentScriptOutputs['StorageUri'] = $blob.ICloudBlob.StorageUri
'''
retentionInterval: 'P1D'
}
dependsOn: [
roleAssignment
blobContainer
]
}
output fileUri string = deploymentScript.properties.outputs.Uri
Hvis den ikke gør det, skal du enten kopiere eksemplet eller justere skabelonen, så den passer til eksemplet.
Udrul skabelonen
Hvis du vil installere denne skabelon på Azure, skal du logge på din Azure-konto fra Visual Studio Code-terminalen. Sørg for, at du har installeret værktøjerne til Azure CLI.
I menuen Terminal skal du vælge Ny terminal. Terminalvinduet åbnes normalt i den nederste halvdel af skærmen.
Hvis terminalvinduet vises bash i højre side, betyder det, at den korrekte shell allerede er åben. Hvis du kan se et bash shell-ikon til højre, kan du også vælge det for at starte shell'en.
Hvis der vises en shell, der ikke bash, vises, skal du vælge rullepilen shell og derefter vælge Git Bash.
I terminalen skal du gå til den mappe, hvor du gemte skabelonen. Hvis du f.eks. har gemt skabelonen i skabeloner mappe, kan du bruge denne kommando:
cd templates
Log på Azure ved hjælp af Azure CLI
Log på Azure i Visual Studio Code-terminalen ved at køre følgende kommando:
az login
Log på din Azure-konto i den browser, der åbnes.
Visual Studio Code-terminalen viser en liste over de abonnementer, der er knyttet til denne konto.
Find det abonnement, du vil bruge til denne øvelse, på listen.
Hvis du gik glip af listen fra logon, kan du bruge følgende kodestykke til at få vist dine abonnementer igen.
az account list --output table
Angiv standardabonnementet for alle de Azure CLI-kommandoer, du kører i denne session.
az account set --subscription "Your Subscription Name or ID"
Hvis du vil installere denne skabelon på Azure, skal du logge på din Azure-konto fra Visual Studio Code-terminalen. Sørg for, at du har installeret værktøjerne til Azure CLI.
I menuen Terminal skal du vælge Ny terminal. Terminalvinduet åbnes normalt i den nederste halvdel af skærmen.
Hvis terminalvinduet vises bash i højre side, betyder det, at den korrekte shell allerede er åben. Hvis du kan se et bash shell-ikon til højre, kan du også vælge det for at starte shell'en.
Hvis der vises en shell, der ikke bash, vises, skal du vælge rullepilen shell og derefter vælge Git Bash.
I terminalen skal du gå til den mappe, hvor du gemte skabelonen. Hvis du f.eks. har gemt skabelonen i skabeloner mappe, kan du bruge denne kommando:
cd templates
Installér Bicep
Kør følgende kommando for at sikre, at du har den nyeste version af Bicep:
az bicep install && az bicep upgrade
Log på Azure ved hjælp af Azure CLI
Log på Azure i Visual Studio Code-terminalen ved at køre følgende kommando:
az login
Log på din Azure-konto i den browser, der åbnes.
Visual Studio Code-terminalen viser en liste over de abonnementer, der er knyttet til denne konto.
Find det abonnement, du vil bruge til denne øvelse, på listen.
Hvis du gik glip af listen fra logon, kan du bruge følgende kodestykke til at få vist dine abonnementer igen.
az account list --output table
Angiv standardabonnementet for alle de Azure CLI-kommandoer, du kører i denne session.
az account set --subscription "Your Subscription Name or ID"
Hvis du vil installere denne skabelon på Azure, skal du logge på din Azure-konto fra Visual Studio Code-terminalen. Sørg for, at du har installeret Azure PowerShell, og log på den samme konto, der aktiverede sandkassen.
I menuen Terminal skal du vælge Ny terminal. Terminalvinduet åbnes normalt i den nederste halvdel af skærmen.
Hvis terminalvinduet vises pwsh- eller powershell- i højre side, betyder det, at den korrekte shell allerede er åben. Hvis du kan se et PowerShell-shellikon til højre, kan du også vælge det for at starte shell'en.
Hvis der vises en shell ud over pwsh- eller powershell-, skal du vælge rullepilen shell og derefter vælge PowerShell-.
I terminalen skal du gå til den mappe, hvor du gemte skabelonen. Hvis du f.eks. har gemt skabelonen i mappen skabeloner, kan du bruge denne kommando:
Set-Location -Path templates
Log på Azure ved hjælp af Azure PowerShell
Log på Azure i Visual Studio Code-terminalen ved at køre følgende kommando:
Connect-AzAccount
Log på din Azure-konto i den browser, der åbnes.
Hent id'et for det abonnement, du vil bruge til denne øvelse, ved at køre følgende kommando:
Get-AzSubscription
Abonnements-id'et er den anden kolonne. Kopiér den anden kolonne. Det ligner noget aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.
Angiv standardabonnementet for alle de Azure PowerShell-kommandoer, du kører i denne session.
Set-AzContext -SubscriptionId {Your subscription ID}
Hvis du vil installere denne skabelon på Azure, skal du logge på din Azure-konto fra Visual Studio Code-terminalen. Sørg for, at du har installeret Azure PowerShell.
I menuen Terminal skal du vælge Ny terminal. Terminalvinduet åbnes normalt i den nederste halvdel af skærmen.
Hvis terminalvinduet vises pwsh- eller powershell- i højre side, betyder det, at den korrekte shell allerede er åben. Hvis du kan se et PowerShell-shellikon til højre, kan du også vælge det for at starte shell'en.
Hvis der vises en shell ud over pwsh- eller powershell-, skal du vælge rullepilen shell og derefter vælge PowerShell-.
I terminalen skal du gå til den mappe, hvor du gemte skabelonen. Hvis du f.eks. har gemt skabelonen i mappen skabeloner, kan du bruge denne kommando:
Set-Location -Path templates
Installér Bicep-kommandolinjegrænsefladen
Hvis du vil bruge Bicep fra Azure PowerShell, installere Bicep CLI-.
Log på Azure ved hjælp af Azure PowerShell
Log på Azure i Visual Studio Code-terminalen ved at køre følgende kommando:
Connect-AzAccount
Log på din Azure-konto i den browser, der åbnes.
Hent id'et for det abonnement, du vil bruge til denne øvelse, ved at køre følgende kommando:
Get-AzSubscription
Abonnements-id'et er den anden kolonne. Kopiér den anden kolonne. Det ligner noget aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.
Angiv standardabonnementet for alle de Azure PowerShell-kommandoer, du kører i denne session.
Set-AzContext -SubscriptionId {Your subscription ID}
Derefter skal du oprette en ressourcegruppe, der indeholder de ressourcer, du opretter som en del af denne opgave. Når du bruger en ny ressourcegruppe, gør du oprydningen meget nemmere efter øvelsen.
Kør denne kommando fra terminalen i Visual Studio Code for at oprette ressourcegruppen til denne opgave:
Opret en ressourcegruppe til øvelsen
resourceGroupName="learndeploymentscript_exercise_1"
az group create --location eastus --name $resourceGroupName
$resourceGroupName = 'learndeploymentscript_exercise_1'
New-AzResourceGroup -Location eastus -Name $resourceGroupName
Seddel
Hvis du bruger et andet navn til din ressourcegruppe, skal du sørge for at opdatere scriptet. Senere i dette modul kan du se, hvordan du undgår hård kodning af ressourcegruppenavne i dine scripts.
Udrul skabelonen på Azure
I følgende kode installeres ARM-skabelonen på Azure. Du får vist en vellykket installation.
Udrul skabelonen ved hjælp af Azure CLI-kommandoer i Visual Studio Code-terminalen.
templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
deploymentName="deploymentscript-"$today
az deployment group create \
--resource-group $resourceGroupName \
--name $deploymentName \
--template-file $templateFile
I følgende kode installeres ARM-skabelonen på Azure. Du får vist en vellykket installation.
Udrul skabelonen ved hjælp af Azure CLI-kommandoer i Visual Studio Code-terminalen.
templateFile="main.bicep"
today=$(date +"%d-%b-%Y")
deploymentName="deploymentscript-"$today
az deployment group create \
--resource-group $resourceGroupName \
--name $deploymentName \
--template-file $templateFile
Følgende kode installerer skabelonen på Azure. Du får vist en vellykket installation.
Udrul skabelonen ved hjælp af Azure PowerShell-kommandoer i terminalen.
$templateFile = 'azuredeploy.json'
$today = Get-Date -Format 'MM-dd-yyyy'
$deploymentName = "deploymentscript-$today"
New-AzResourceGroupDeployment `
-ResourceGroupName $resourceGroupName `
-Name $deploymentName `
-TemplateFile $templateFile
Følgende kode installerer skabelonen på Azure. Du får vist en vellykket installation.
Udrul skabelonen ved hjælp af Azure PowerShell-kommandoer i terminalen.
$templateFile = 'main.bicep'
$today = Get-Date -Format 'MM-dd-yyyy'
$deploymentName = "deploymentscript-$today"
New-AzResourceGroupDeployment `
-ResourceGroupName $resourceGroupName `
-Name $deploymentName `
-TemplateFile $templateFile
Gennemse resultatet af skabelonen
Når installationen er fuldført, får du en URL-adresse, der peger på den fil, som installationsscriptet kopierede til bloblageret.
Hent filen ved hjælp af URL-outputtet fra skabeloninstallationen for at bekræfte, at installationsscriptet fungerede korrekt.
uri=$(az deployment group show --resource-group $resourceGroupName --name $deploymentName --query 'properties.outputs.fileUri.value' --output tsv) curl $uri
Kommandoen returnerer følgende kode.
{ "environment": "production", "hostname": "tailwindtraders.com", "Logging": { "LogLevel": { "Default": "Debug" } }, "ApplicationInsights": { "InstrumentationKey": "" }, "AllowedHosts": "*", "CosmosDb": { "Host": "", "Key": "", "Database": "Products" } }
Du kan også gennemse loggene (og andre oplysninger om installationen) fra Azure Portal eller ved hjælp af følgende kommando.
az deployment-scripts show-log --resource-group $resourceGroupName --name CopyConfigScript
Hent filen ved hjælp af URL-outputtet fra skabeloninstallationen for at bekræfte, at installationsscriptet fungerede korrekt.
$fileUri = (Get-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -Name $deploymentName).Outputs.fileUri.Value Invoke-RestMethod $fileUri
Kommandoen returnerer følgende kode.
environment : production hostname : tailwindtraders.com Logging : @{LogLevel=} ApplicationInsights : @{InstrumentationKey=} AllowedHosts : * CosmosDb : @{Host=; Key=; Database=Products}
Du kan også gennemse loggene (og andre oplysninger om installationen) fra Azure Portal eller ved hjælp af følgende kommandolinje.
Get-AzDeploymentScriptLog -ResourceGroupName $resourceGroupName -Name CopyConfigScript
Ryd op i ressourcegruppen
Nu, hvor du har installeret en ARM-skabelon med et installationsscript, kan du fjerne den ressourcegruppe, der indeholder alle de ressourcer og rolletildelinger, du har oprettet.
az group delete --name $resourceGroupName
Remove-AzResourceGroup -Name $resourceGroupName