Exercício – Implementar os seus modelos do Resource Manager
Nota
A primeira vez que ativar um sandbox e aceitar os termos, a sua conta Microsoft será associada a um novo diretório do Azure chamado Microsoft Learn Sandbox. É adicionado a uma subscrição especial chamada Subscrição de Assistente.
Aqui, irá implementar um modelo do Azure Resource Manager (ARM) a partir do seu computador e a partir do repositório do GitHub ao especificar um URI.
Importante
Este exercício utiliza a extensão Azure Resource Manager Tools para Visual Studio Code. Certifique-se de que instala esta extensão no Visual Studio Code.
Configurar o seu ambiente com a subscrição do Sandbox do Microsoft Learn
Para desempenhar cada implementação nesta unidade, precisa de iniciar sessão na sua conta do Azure a partir do terminal do Visual Studio Code.
Certifique-se de que está a iniciar sessão na mesma conta que ativou o sandbox.
Iniciar sessão no Azure
A partir do terminal do Visual Studio Code, execute o seguinte comando para iniciar sessão no Azure. Executar este comando abre um navegador que lhe permite iniciar sessão na sua conta.
Connect-AzAccount
Assim que tiver iniciado sessão, verá uma lista das subscrições associadas a esta conta no terminal. Se ativou o sandbox, a Subscrição de Assistente deverá estar nesta lista.
Verifique o nome da assinatura. O comando a seguir lista suas assinaturas, nomes e suas IDs em um formato de tabela fácil de ler. Procure por
Concierge Subscription
.Get-AzSubscription
Altere a sua subscrição ativa para a Subscrição de Assistente.
$context = Get-AzSubscription -SubscriptionName "Concierge Subscription" | Set-AzContext
Definir o grupo de recursos predefinido
Agora, tem de definir o grupo de recursos criado para si no sandbox como o grupo de recursos predefinido. Para executar essa operação, primeiro você precisa obter o nome do grupo de recursos executando o seguinte comando.
Get-AzResourceGroup | where-object ResourceGroupName -match "learn" | Set-AzDefault
Neste comando, utilize o nome do recurso que obteve no comando anterior. (Parece algo como learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) Este comando permite que você omita esse parâmetro do restante dos comandos do Azure PowerShell neste exercício.
Nota
Normalmente, quando você executa um comando PowerShell ou CLI do Azure para implantar um modelo, deve especificar o nome do grupo de recursos de destino. Executando o comando anterior, definimos o contexto de nossa implantação. Especificamos nosso nome de grupo de recursos de área restrita executando o comando Set-AzDefault PowerShell:
Set-AzDefault -ResourceGroupName {Resource Group Name}
Implementar um modelo local
No exercício a seguir, você implanta um modelo de sua máquina local. O nome do grupo de recursos que geralmente utiliza para implementar no seu próprio ambiente não é necessário aqui, uma vez que já definimos o contexto do grupo de recursos predefinido na secção acima.
Para começar, copie e cole os conteúdos do seguinte código modelo num ficheiro de um diretório local. Utilize
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 PowerShell para implantá-lo no nível do grupo de recursos sobre o qual falamos na última unidade. Ou seja, 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
Depois que terminar, você deve 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 :
Implementar o mesmo modelo local com valores de parâmetro
No último exercício, implementou o seu modelo ao utilizar o valor predefinido do parâmetro. Ao implementar um modelo do Resource Manager local, poderá ter de transmitir valores de parâmetro. Pode utilizar parâmetros inline ou um ficheiro de parâmetro.
De forma a transmitir parâmetros inline para a sua implementação, tem de indicar os nomes do parâmetro com o cmdlet New-AzResourceGroupDeployment
. No próximo exercício, irá transmitir os parâmetros como parâmetros inline e como um ficheiro de parâmetros.
Usando o mesmo modelo do último exercício, construa uma tabela de hash que contenha os valores para os 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
Uma vez concluído, deverá ter resultados semelhantes a estes:
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 transmitir parâmetros como valores inline no seu script, poderá considerar mais fácil utilizar um ficheiro JSON que contenha os valores dos parâmetros. O ficheiro de parâmetros pode ser um ficheiro local ou um ficheiro externo/remoto com um URI acessível. Para obter mais informações sobre o ficheiro de parâmetros, veja Criar ficheiro de parâmetros do Resource Manager.
Para transmitir um ficheiro de parâmetros local, utilizamos o parâmetro
TemplateParameterFile
no mesmo comando que temos utilizado. No entanto, em primeiro lugar, precisa de criar e guardar o seu ficheiro de parâmetros.Como estamos usando o Visual Studio Code com a extensão Ferramentas do Azure Resource Manager, você pode abrir o modelo ARM salvo localmente e selecionar o link Selecionar/criar arquivo de parâmetro...
Selecione Novo no menu e, em seguida, selecione Apenas parâmetros necessários. A extensão cria um arquivo de parâmetro com base no modelo atualmente aberto.
Use o seguinte comando do PowerShell com o
TemplateParameterFile
parâmetro.$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, seus resultados devem ser parecidos com o 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 :
Implementar um modelo externo ou remoto
Em algumas instâncias, terá de implementar a partir de uma localização externa ou remota, em vez de a partir de um modelo no seu computador local. Pode armazenar modelos num repositório de controlo de código fonte (como o GitHub). Em alternativa, pode armazená-los numa conta de armazenamento do Azure para acesso partilhado na sua organização.
Para implementar um modelo externo, utilize o parâmetro
TemplateUri
.No exercício seguinte, irá implementar um modelo do Resource Manager a partir de um repositório do GitHub. O repositório é público. Portanto, não precisa de se preocupar em implementar um modelo que requer um token de Assinatura de Acesso Partilhado (SAS). Para obter detalhes sobre a utilização de uma localização remota privada ou segura, veja Implementar um modelo privado com o token SAS.
O URI do modelo para o exercício é o seguinte: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. É um modelo curto que implanta uma conta de armazenamento básica em seu ambiente de área restrita.
O comando do PowerShell é exatamente o mesmo para um modelo local. A única diferença é que o parâmetro
-TemplateUri
substitui o parâmetro-TemplateFile
.Utilize o seguinte código para implementar no sandbox fornecido:
$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 como a captura de tela a seguir. Irão destacar os detalhes da localização 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 :
Nota
Esta secção foi escrita com comandos da CLI do Azure no Subsistema Windows para Linux (WSL2) no Windows 10. Os comandos são os mesmos, quer esteja a utilizar a CLI do Azure num shell do Bash, PowerShell ou CMD. Contudo, as formas de abordar as variáveis poderão ser diferentes.
Iniciar sessão no Azure
A partir do terminal do Visual Studio Code, execute o seguinte comando para iniciar sessão no Azure. Executar este comando abre um navegador que lhe permite iniciar sessão na sua conta.
az login
Assim que tiver iniciado sessão, verá uma lista JSON das subscrições associadas a esta conta no terminal. Se ativou o sandbox, a Subscrição de Assistente deverá estar nesta lista.
Obtenha o ID de subscrição. O comando a seguir lista suas assinaturas e suas IDs. O ID de subscrição é a terceira coluna. Procure
Concierge Subscription
e copie a terceira coluna. Deve ser algo comoaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.az account list -o table
Altere a sua subscrição ativa para a Subscrição de Assistente. Substitua
{Your subscription ID}
pelo ID da Subscrição de Assistente que obteve com o último comando.az account set -s {Your subscription ID}
Definir o grupo de recursos predefinido
Agora, tem de definir o grupo de recursos criado para si no sandbox como o grupo de recursos predefinido. Para realizar essa operação, primeiro tem de obter o nome do grupo de recursos através do seguinte comando:
az group list -o table
Neste comando, utilize o nome do recurso que obteve no comando anterior. (Parece algo como learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) Este comando permite que você omita esse parâmetro do restante dos comandos da CLI do Azure neste exercício.
Nota
Normalmente, quando utiliza um comando da CLI do Azure para implementar um modelo, tem de especificar o nome do grupo de recursos de destino. No exercício deste módulo, ignoramos este requisito ao definir o contexto da nossa implementação. Vamos especificar o nome do nosso grupo de recursos do sandbox no passo abaixo através do comando da CLI do Azure az configure.
az configure --defaults group={Resource Group Name}
Implementar um modelo local
No exercício a seguir, você implanta um modelo de sua máquina local. O nome do grupo de recursos que geralmente utiliza para implementar no seu próprio ambiente não é necessário aqui, uma vez que já definimos o contexto do grupo de recursos predefinido na secção acima.
Para começar, copie e cole os conteúdos do seguinte código modelo num ficheiro de um diretório local. Utilize
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 sobre o qual falamos na última unidade. Utilize az deployment group create.
Nota
No exemplo abaixo, o ficheiro de modelo está localizado numa pasta json na unidade raiz do Subsistema Windows para Linux (WSL2). Ajuste o comando de acordo com o seu shell preferido.
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
Depois de terminar, a saída resultante deve se parecer com o exemplo a seguir. Para se certificar de que a sua implementação foi bem-sucedida, veja a 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" }
Implementar o mesmo modelo local com valores de parâmetro
No último exercício, implementou o seu modelo ao utilizar o valor predefinido do parâmetro. Ao implementar um modelo do Resource Manager local, poderá ter de transmitir valores de parâmetro. Pode utilizar parâmetros inline ou um ficheiro de parâmetro.
No próximo exercício, você passa parâmetros embutidos para sua implantação. Você precisa fornecer os nomes dos parâmetros, quer esteja usando parâmetros embutidos ou um arquivo de parâmetros, usando o az deployment group create
comando.
Usando o mesmo modelo do último exercício, construa uma variável que contenha os parâmetros em um formato de cadeia de caracteres JSON para os parâmetros de modelo necessários.
Nota
No exemplo abaixo, o ficheiro de modelo está localizado numa pasta json no Subsistema Windows para Linux (WSL2). Ajuste o comando de acordo com o shell e SO preferido.
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"
Depois de terminada a implementação, deverá ter resultados semelhantes ao exemplo abaixo. Para garantir que o comando foi bem-sucedido, consulte a
"parameters"
seção e o"provisioningState"
valor.{- 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 transmitir parâmetros como valores inline no seu script, poderá considerar mais fácil utilizar um ficheiro JSON que contenha os valores dos parâmetros. O ficheiro de parâmetros pode ser um ficheiro local ou um ficheiro externo/remoto com um URI acessível. Para obter mais informações sobre o ficheiro de parâmetros, veja Criar ficheiro de parâmetros do Resource Manager.
Para transmitir um ficheiro de parâmetros local, utilizamos o parâmetro
--parameters
no mesmo comando que temos utilizado. No entanto, em primeiro lugar, precisa de criar e guardar o seu ficheiro de parâmetros.Como estamos usando o Visual Studio Code com a extensão Ferramentas do Azure Resource Manager, você pode abrir o modelo ARM salvo localmente e selecionar o link Selecionar ou criar um arquivo de parâmetro para habilitar a validação completa.
No menu, selecione New (Novo). A extensão cria um arquivo de parâmetro com base no modelo atualmente aberto.
Utilize o seguinte comando da CLI do Azure com o parâmetro
--parameters
.Nota
No exemplo abaixo, o ficheiro de modelo está localizado numa pasta json no Subsistema Windows para Linux (WSL2). Ajuste o comando de acordo com o seu shell e SO preferido.
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, seus resultados serão parecidos com o 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" }
Implementar um modelo externo ou remoto
Em algumas instâncias, terá de implementar a partir de uma localização externa ou remota, em vez de a partir de um modelo no seu computador local. Pode armazenar modelos num repositório de controlo de código fonte (como o GitHub). Em alternativa, pode armazená-los numa conta de armazenamento do Azure para acesso partilhado na sua organização.
- Para implementar um modelo externo, utilize o parâmetro
--template-uri
.
Neste exercício, você implanta um modelo ARM a partir de um repositório GitHub. O repositório é público. Portanto, não precisa de se preocupar em implementar um modelo que requer um token de Assinatura de Acesso Partilhado (SAS). Para obter detalhes sobre a utilização de uma localização remota privada ou segura, veja Implementar um modelo privado com o token SAS.
O URI do modelo para o exercício é o seguinte: https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. É um modelo curto que implanta uma conta de armazenamento básica em seu ambiente de área restrita.
O comando da CLI do Azure é exatamente o mesmo para um modelo local. A única diferença é que o parâmetro
--template-uri
substitui o parâmetro--template-file
.Utilize o seguinte código para implementar no sandbox fornecido:
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 como o seguinte bloco de código. Destacam os detalhes da localização do modelo na secção
"templateLink"
. Eles também mostram se a implantação foi bem-sucedida na"provisioningState"
seção.{- 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" }