Exercício – Implantar modelos do ARM
Observação
Na primeira vez que você ativar uma área restrita e aceitar os termos, sua conta Microsoft será associada a um novo diretório do Azure chamado Área Restrita do Microsoft Learn. Você será adicionado a uma assinatura especial denominada Assinatura do Concierge.
Aqui, você implanta um modelo do ARM (Azure Resource Manager) do computador e de um repositório do GitHub especificando um URI.
Importante
Este exercício usará Ferramentas do Azure Resource Manager para Visual Studio Code. Certifique-se de instalar essa extensão no Visual Studio Code.
Configurar o ambiente com a assinatura da Área Restrita do Microsoft Learn
Para executar cada implantação nessa unidade, você precisa entrar em sua conta do Azure por meio do terminal do Visual Studio Code.
Verifique se você está entrando na mesma conta que ativou a área restrita.
Entrar no Azure
Do terminal no Visual Studio Code, execute o comando a seguir para entrar no Azure. A execução deste comando abre um navegador que permite que você entre na sua conta.
Connect-AzAccount
Depois de entrar, você vê uma lista das assinaturas associadas a essa conta no terminal. Se você ativou a área restrita, a Assinatura de Concierge deve estar nesta lista.
Verifique o nome da assinatura. O comando a seguir lista suas assinaturas, os nomes e as respectivas IDs em um formato de tabela fácil de ler. Procure
Concierge Subscription
.Get-AzSubscription
Altere sua assinatura ativa para a Assinatura de Concierge.
$context = Get-AzSubscription -SubscriptionName "Concierge Subscription" | Set-AzContext
Definir o grupo de recursos padrão
Agora você precisará definir o grupo de recursos criado para você na área restrita como o grupo de recursos padrão. Para executar essa operação, primeiro você precisa obter o nome do grupo de recursos executando o comando a seguir.
Get-AzResourceGroup | where-object ResourceGroupName -match "learn" | Set-AzDefault
Nesse comando, use o nome do recurso que você obteve com o comando anterior. (Ele se parece com learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) Esse comando permite omitir o parâmetro do restante dos comandos do Azure PowerShell neste exercício.
Observação
Normalmente, ao executar um comando do PowerShell ou da CLI do Azure para implantar um modelo, você precisa especificar o nome do grupo de recursos de destino. Executando o comando anterior, definimos o contexto da implantação. Especificamos o nome do grupo de recursos de área restrita executando o comando Set-AzDefault do PowerShell:
Set-AzDefault -ResourceGroupName {Resource Group Name}
Implantar um modelo local
No exercício a seguir, você vai implantar um modelo do computador local. O nome do grupo de recursos que você costuma usar ao implantar em seu ambiente não é necessário aqui, pois já definimos o grupo de recursos padrão na seção anterior.
Para começar, copie e cole o conteúdo do código de modelo a seguir em um arquivo em um diretório local. Use
C:\JSON\maintemplate.json
, por exemplo.{ "$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" } } ] } } ] }
Depois de salvar o arquivo localmente, você pode usar o comando do PowerShell para implantá-lo no nível do grupo de recursos que abordamos na última unidade. A saber, use o comando New-AzResourceGroupDeployment.
$templateFile="C:\JSON\maintemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile
Após a conclusão, você terá resultados como este exemplo.
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 :
Implantar o mesmo modelo local com valores de parâmetro
No último exercício, você implantou o modelo usando o valor padrão do parâmetro. Ao implantar um modelo do ARM local, talvez você precise passar valores de parâmetro. Você pode usar parâmetros embutidos ou um arquivo de parâmetros.
Para passar parâmetros embutidos para sua implantação, você precisa fornecer os nomes do parâmetro com o cmdlet New-AzResourceGroupDeployment
. No próximo exercício, você passará os parâmetros como parâmetros embutidos e como um arquivo de parâmetros.
Usando o mesmo modelo do último exercício, crie uma tabela de hash que contém os valores dos parâmetros de modelo necessários.
$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
Após a conclusão, você deverá ter resultados como este:
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 :
Em vez de passar parâmetros como valores embutidos no script, você pode achar mais fácil usar um arquivo JSON com os valores dos parâmetros. O arquivo de parâmetros pode ser um arquivo local ou um arquivo externo/remoto com um URI acessível. Para saber mais sobre o arquivo de parâmetro, confira Criar arquivo de parâmetro do Resource Manager.
Para passar um arquivo de parâmetros local, usamos o parâmetro
TemplateParameterFile
no mesmo comando que temos usado até o momento. Mas primeiro, você precisa criar e salvar o arquivo de parâmetros.Como estamos usando o Visual Studio Code com a extensão Ferramentas do Azure Resource Manager, você pode abrir o modelo do ARM salvo localmente e escolher o link Selecionar/criar um arquivo de parâmetros….
Selecione Novo no menu e Somente os parâmetros obrigatórios. A extensão cria um arquivo de parâmetros com base no modelo aberto no momento.
Use o comando do PowerShell a seguir com o parâmetro
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
Após a implantação, os resultados serão semelhantes ao exemplo a seguir.
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 :
Implantar um modelo externo ou remoto
Em algumas instâncias, você precisa implantar de um local externo ou remoto em vez de um modelo no computador local. É possível armazenar modelos em um repositório de controle de código-fonte (como o GitHub). Ou ainda armazená-los em uma conta de armazenamento do Azure para acesso compartilhado na sua organização.
Para implantar um modelo externo, use o parâmetro
TemplateUri
.No próximo exercício, você implantará um modelo do ARM por meio de um repositório do GitHub. O repositório é público, de modo que você não precisa se preocupar com a implantação de um modelo que requer um token SAS (Assinatura de Acesso Compartilhado). Para conhecer os detalhes de como usar um local remoto seguro ou privado, confira Implantar um modelo privado com o token SAS.
O URI do modelo para o exercício é https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Trata-se de um modelo curto que implanta uma conta de armazenamento básica no ambiente de área restrita.
O comando do PowerShell é exatamente o mesmo que para um modelo local. A única diferença é que o parâmetro
-TemplateUri
substitui o parâmetro-TemplateFile
.Use o seguinte código para implantar na área restrita fornecida:
$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
Os resultados são semelhantes à captura de tela a seguir. Eles descrevem os detalhes do local do modelo.
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 :
Observação
Esta seção foi escrita usando comandos da CLI do Azure no WSL2 (Subsistema Windows Linux) do Windows 10. Os comandos são os mesmos, quer você esteja usando a CLI do Azure em um shell do PowerShell, do CMD ou do Bash. No entanto, a maneira como as variáveis são endereçadas pode mudar.
Entrar no Azure
Do terminal no Visual Studio Code, execute o comando a seguir para entrar no Azure. A execução deste comando abre um navegador que permite que você entre na sua conta.
az login
Após entrar, você verá uma lista em JSON das assinaturas associadas a essa conta no terminal. Se você ativou a área restrita, a Assinatura de Concierge deve estar nesta lista.
Obtenha a ID da assinatura. O comando a seguir lista suas assinaturas e as respectivas IDs. A ID da assinatura é a terceira coluna. Procure por
Concierge Subscription
e copie a terceira coluna. Ele deve ser semelhante aaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.az account list -o table
Altere sua assinatura ativa para a assinatura do concierge. Substitua
{Your subscription ID}
pela ID da Assinatura de Concierge que você obteve com o comando anterior.az account set -s {Your subscription ID}
Definir o grupo de recursos padrão
Agora você precisará definir o grupo de recursos criado para você na área restrita como o grupo de recursos padrão. Para executar essa operação, primeiro você precisa obter o nome do grupo de recursos usando o seguinte comando:
az group list -o table
Nesse comando, use o nome do recurso que você obteve com o comando anterior. (Ele se parece com learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) O comando permite omitir esse parâmetro do restante dos comandos da CLI do Azure neste exercício.
Observação
Normalmente, ao usar um comando da CLI do Azure para implantar um modelo, você precisa especificar o nome do grupo de recursos de destino. No exercício neste módulo, estamos ignorando esse requisito definindo o contexto da implantação. Vamos especificar o nome do grupo de recursos da área restrita na próxima etapa usando o comando az configure da CLI do Azure.
az configure --defaults group={Resource Group Name}
Implantar um modelo local
No exercício a seguir, você vai implantar um modelo do computador local. O nome do grupo de recursos que você costuma usar ao implantar em seu ambiente não é necessário aqui, pois já definimos o grupo de recursos padrão na seção anterior.
Para começar, copie e cole o conteúdo do código de modelo a seguir em um arquivo em um diretório local. Use
C:\JSON\maintemplate.json
ou/mnt/c/Users/you/json/maintemplate.json
, por exemplo.{ "$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" } } ] } } ] }
Depois de salvar o arquivo localmente, você pode usar o comando da CLI do Azure para implantá-lo no nível do grupo de recursos que abordamos na última unidade. A saber, use az deployment group create.
Observação
No exemplo a seguir, o arquivo de modelo está em uma pasta json na unidade inicial do WSL2 (Windows Linux Subsystem). Ajuste o comando com base no shell de sua escolha.
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
Após a conclusão, a saída resultante será semelhante ao exemplo a seguir. Para verificar se a implantação foi bem-sucedida, procure pela linha
"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" }
Implantar o mesmo modelo local com valores de parâmetro
No último exercício, você implantou o modelo usando o valor padrão do parâmetro. Ao implantar um modelo do ARM local, talvez você precise passar valores de parâmetro. Você pode usar parâmetros embutidos ou um arquivo de parâmetros.
No próximo exercício, você transmitirá parâmetros embutidos para a implantação. Você precisa fornecer os nomes dos parâmetros, quer esteja usando parâmetros embutidos ou um arquivo de parâmetro, usando o comando az deployment group create
.
Usando o mesmo modelo do último exercício, crie uma variável que contém os parâmetros em um formato de cadeia de caracteres JSON para os parâmetros de modelo necessários.
Observação
No exemplo a seguir, o arquivo de modelo está em uma pasta json no WSL2 (Windows Linux Subsystem). Ajuste o comando com base no shell e no SO de sua escolha.
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"
Após a conclusão, você deverá ter resultados semelhantes ao exemplo a seguir. Para verificar se o comando foi bem-sucedido, confira a seção
"parameters"
e o valor"provisioningState"
.{- 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" }
Em vez de passar parâmetros como valores embutidos no script, você pode achar mais fácil usar um arquivo JSON com os valores dos parâmetros. O arquivo de parâmetros pode ser um arquivo local ou um arquivo externo/remoto com um URI acessível. Para saber mais sobre o arquivo de parâmetro, confira Criar arquivo de parâmetro do Resource Manager.
Para passar um arquivo de parâmetros local, usamos o parâmetro
--parameters
no mesmo comando que temos usado até o momento. Mas primeiro, você precisa criar e salvar o arquivo de parâmetros.Como estamos usando o Visual Studio Code com a extensão Ferramentas do Azure Resource Manager, você pode abrir o modelo do ARM salvo localmente e escolher o link Selecionar ou criar um arquivo de parâmetros para habilitar a validação completa.
Selecione Novo no menu. A extensão cria um arquivo de parâmetros com base no modelo aberto no momento.
Use o comando da CLI do Azure a seguir com o parâmetro
--parameters
.Observação
No exemplo a seguir, o arquivo de modelo está em uma pasta json no WSL2 (Windows Linux Subsystem). Ajuste o comando com base no shell e no SO de sua escolha.
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
Após a implantação, os resultados serão semelhantes ao exemplo a seguir.
{- 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" }
Implantar um modelo externo ou remoto
Em algumas instâncias, você precisa implantar de um local externo ou remoto em vez de um modelo no computador local. É possível armazenar modelos em um repositório de controle de código-fonte (como o GitHub). Ou ainda armazená-los em uma conta de armazenamento do Azure para acesso compartilhado na sua organização.
- Para implantar um modelo externo, use o parâmetro
--template-uri
.
Neste exercício, você implantará um modelo do ARM por meio de um repositório do GitHub. O repositório é público, de modo que você não precisa se preocupar com a implantação de um modelo que requer um token SAS (Assinatura de Acesso Compartilhado). Para conhecer os detalhes de como usar um local remoto seguro ou privado, confira Implantar um modelo privado com o token SAS.
O URI do modelo para o exercício é https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Trata-se de um modelo curto que implanta uma conta de armazenamento básica no ambiente de área restrita.
O comando da CLI do Azure é exatamente o mesmo que para um modelo local. A única diferença é que o parâmetro
--template-uri
substitui o parâmetro--template-file
.Use o seguinte código para implantar na área restrita fornecida:
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
Os resultados são semelhantes ao bloco de código a seguir. Eles descrevem os detalhes do local do modelo na seção
"templateLink"
. Eles também mostram se a implantação foi bem-sucedida na seção"provisioningState"
.{- 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" }