Exercício - Criar e implantar uma especificação de modelo
Nota
Na primeira vez que você ativar uma área restrita e aceitar os termos, sua conta da Microsoft será associada a um novo diretório do Azure chamado Microsoft Learn Sandbox. Você também é adicionado a uma assinatura especial chamada Assinatura do concierge.
Na sua empresa de brinquedos, a sua equipa trabalha com o Azure há algum tempo e criou muitos modelos que utiliza diariamente. Você decide pegar um modelo e criar uma especificação de modelo. Você está começando com o modelo que usa para criar contas do Azure Cosmos DB.
Sua equipe decidiu que o backup contínuo precisa ser configurado em todas as suas contas do Azure Cosmos DB. Portanto, você deseja incluir backups na configuração padrão das contas do Azure Cosmos DB que são provisionadas por meio da especificação de modelo.
Neste exercício, você publica o modelo do Azure Cosmos DB como uma especificação de modelo.
Durante o processo, você:
- Crie um modelo que você usará como a especificação do modelo.
- Atualize o modelo para garantir que os parâmetros sejam fáceis de entender e trabalhar.
- Publique a especificação do modelo.
- Verifique a especificação do modelo usando o portal do Azure.
- Implante a especificação do modelo para testá-lo.
- Verifique a implantação.
Este exercício usa a extensão Bicep para Visual Studio Code. Certifique-se de que instala esta extensão no Visual Studio Code.
Criar o modelo
Você começa com um dos modelos que sua equipe criou. O modelo implanta uma conta do Azure Cosmos DB e a configura para habilitar o backup contínuo.
Abra o Visual Studio Code.
Crie um novo arquivo chamado main.bicep.
Salve o arquivo vazio para que o Visual Studio Code carregue as ferramentas do Bíceps.
Você pode selecionar Arquivo>Salvar como ou Ctrl+S no Windows (⌘+S no macOS). Lembre-se de onde você salvou o arquivo. Por exemplo, talvez você queira criar uma pasta de scripts para salvá-la.
Copie o seguinte código para main.bicep:
param location string = resourceGroup().location param cosmosDBAccountName string = 'toy-${uniqueString(resourceGroup().id)}' resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2021-04-15' = { name: cosmosDBAccountName kind: 'GlobalDocumentDB' location: location properties: { consistencyPolicy: { defaultConsistencyLevel: 'Session' } locations: [ { locationName: location failoverPriority: 0 isZoneRedundant: false } ] databaseAccountOfferType: 'Standard' enableAutomaticFailover: false enableMultipleWriteLocations: false backupPolicy: { type: 'Continuous' } } }
Observe que você definiu
backupPolicy
comoContinuous
. Esse valor configura o Azure Cosmos DB para fazer backups de seus dados de forma contínua, em vez de periodicamente.Guarde o ficheiro.
Abra o Visual Studio Code.
Crie um novo arquivo chamado azuredeploy.json.
Salve o arquivo vazio para que o Visual Studio Code carregue as ferramentas de modelo do Azure Resource Manager (modelo ARM).
Você pode selecionar Arquivo>Salvar como ou Ctrl+S no Windows (⌘+S no macOS). Lembre-se de onde você salvou o arquivo. Por exemplo, talvez você queira criar uma pasta de scripts para salvá-la.
Copie o seguinte código para azuredeploy.json:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "string", "defaultValue": "[resourceGroup().location]" }, "cosmosDBAccountName": { "type": "string", "defaultValue": "[concat('toy-', uniqueString(resourceGroup().id))]" } }, "resources": [ { "type": "Microsoft.DocumentDB/databaseAccounts", "apiVersion": "2021-04-15", "name": "[parameters('cosmosDBAccountName')]", "kind": "GlobalDocumentDB", "location": "[parameters('location')]", "properties": { "consistencyPolicy": { "defaultConsistencyLevel": "Session" }, "locations": [ { "locationName": "[parameters('location')]", "failoverPriority": 0, "isZoneRedundant": false } ], "databaseAccountOfferType": "Standard", "enableAutomaticFailover": false, "enableMultipleWriteLocations": false, "backupPolicy": { "type": "Continuous" } } } ] }
Observe que você define o
backupPolicy
comoContinuous
. Esse valor configura o Azure Cosmos DB para fazer backups de seus dados de forma contínua, em vez de periodicamente.Guarde o ficheiro.
Tornar os parâmetros mais fáceis de entender
Quando você trabalha com especificações de modelo, é importante considerar como outras pessoas usam seu modelo. Esta revisão é especialmente importante para parâmetros, porque eles são a principal maneira pela qual outras pessoas interagem com seu código. Os parâmetros no modelo da sua equipe não incluem descrições ou outras dicas sobre como eles devem ser usados, então você adiciona essas informações aqui.
Atualize a definição de
location
parâmetro adicionando uma descrição:@description('The Azure region into which the Cosmos DB resources should be deployed.') param location string = resourceGroup().location
Atualize a
cosmosDBAccountName
definição de parâmetro para adicionar uma descrição e especificar o comprimento mínimo e máximo do nome:@description('The name of the Cosmos DB account. This name must be globally unique, and it must only include lowercase letters, numbers, and hyphens.') @minLength(3) @maxLength(44) param cosmosDBAccountName string = 'toy-${uniqueString(resourceGroup().id)}'
Guarde o ficheiro.
Atualize a definição de
location
parâmetro adicionando uma descrição:"location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "The Azure region into which the Cosmos DB resources should be deployed." } },
Atualize a
cosmosDBAccountName
definição de parâmetro para adicionar uma descrição e especificar o comprimento mínimo e máximo do nome:"cosmosDBAccountName": { "type": "string", "defaultValue": "[concat('toy-', uniqueString(resourceGroup().id))]", "maxLength": 44, "minLength": 3, "metadata": { "description": "The name of the Cosmos DB account. This name must be globally unique, and it must only include lowercase letters, numbers, and hyphens." } }
Guarde o ficheiro.
Iniciar sessão no Azure
Para implementar este modelo no Azure, tem de iniciar sessão na sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou a CLI do Azure e lembre-se de iniciar sessão com a mesma conta que utilizou para ativar a sandbox.
No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.
Se o shell mostrado no lado direito da janela do terminal for bash, o shell correto estará aberto e você poderá pular para a próxima seção.
Se um shell diferente de bash for exibido, selecione a seta suspensa do shell e selecione Azure Cloud Shell (Bash).
Na lista de shells de terminal, selecione bash.
No terminal, vá para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:
cd templates
Instalar o Bicep
Execute o seguinte comando para garantir que você tenha a versão mais recente do Bicep:
az bicep install && az bicep upgrade
Iniciar sessão no Azure
No terminal do Visual Studio Code, entre no Azure executando o seguinte comando:
az login
No browser que se abre, inicie sessão na sua conta do Azure.
O terminal de código do Visual Studio exibe uma lista das assinaturas associadas a essa conta.
Defina a assinatura padrão para todos os comandos da CLI do Azure executados nesta sessão.
az account set --subscription "Concierge Subscription"
Nota
Se você usou mais de uma área restrita recentemente, o terminal pode exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as próximas duas etapas para definir uma como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.
Obtenha os IDs da Subscrição de Assistente.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Predefina a subscrição através do ID da subscrição. Substitua {o ID da subscrição} pelo ID da Subscrição da Assistente mais recente.
az account set --subscription {your subscription ID}
Definir o grupo de recursos predefinido
Ao usar a CLI do Azure, você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos da CLI do Azure neste exercício. Defina o padrão para o grupo de recursos criado para você no ambiente de área restrita.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Para implantar esse modelo no Azure, entre em sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou o Azure PowerShell e inicie sessão na mesma conta que ativou a sandbox.
No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.
Se o shell mostrado no lado direito da janela do terminal for powershell ou pwsh, o shell correto estará aberto e você poderá pular para a próxima seção.
Se um shell diferente de powershell ou pwsh for exibido, selecione a seta suspensa do shell e selecione PowerShell.
Na lista de shells de terminal, selecione powershell ou pwsh.
No terminal, vá para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:
Set-Location -Path templates
Instalar a CLI do Bíceps
Para usar o Bicep do Azure PowerShell, instale a CLI do Bicep.
Iniciar sessão no Azure com o Azure PowerShell
No terminal de código do Visual Studio, execute o seguinte comando:
Connect-AzAccount
Um navegador é aberto para que você possa entrar em sua conta do Azure.
Depois de iniciar sessão no Azure, o terminal apresenta uma lista das subscrições associadas a esta conta.
Se você ativou a área restrita, uma assinatura chamada Assinatura do concierge será exibida. Use-o para o resto do exercício.
Defina a assinatura padrão para todos os comandos do Azure PowerShell executados nesta sessão.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Nota
Se você usou mais de uma área restrita recentemente, o terminal pode exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as próximas duas etapas para definir uma como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.
Obtenha o ID de subscrição. A execução do comando a seguir lista suas assinaturas e suas IDs.
Concierge Subscription
Procure e, em seguida, copie o ID da segunda coluna. Parece algo comoaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Altere sua assinatura ativa para a Assinatura do Concierge. Certifique-se de que substitui {O seu ID de subscrição} pelo que copiou.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Definir o grupo de recursos predefinido
Você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos do Azure PowerShell neste exercício. Defina esse padrão para o grupo de recursos criado para você no ambiente de área restrita.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Para implementar este modelo no Azure, tem de iniciar sessão na sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou a CLI do Azure e lembre-se de iniciar sessão com a mesma conta que utilizou para ativar a sandbox.
No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.
Se o shell mostrado no lado direito da janela do terminal for bash, o shell correto estará aberto e você poderá pular para a próxima seção.
Se um shell diferente de bash for exibido, selecione a seta suspensa do shell e selecione Azure Cloud Shell (Bash).
Na lista de shells de terminal, selecione bash.
No terminal, vá para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:
cd templates
Iniciar sessão no Azure
No terminal do Visual Studio Code, entre no Azure executando o seguinte comando:
az login
No browser que se abre, inicie sessão na sua conta do Azure.
O terminal de código do Visual Studio exibe uma lista das assinaturas associadas a essa conta.
Defina a assinatura padrão para todos os comandos da CLI do Azure executados nesta sessão.
az account set --subscription "Concierge Subscription"
Nota
Se você usou mais de uma área restrita recentemente, o terminal pode exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as próximas duas etapas para definir uma como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.
Obtenha os IDs da Subscrição de Assistente.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Predefina a subscrição através do ID da subscrição. Substitua {o ID da subscrição} pelo ID da Subscrição da Assistente mais recente.
az account set --subscription {your subscription ID}
Definir o grupo de recursos predefinido
Ao usar a CLI do Azure, você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos da CLI do Azure neste exercício. Defina o padrão para o grupo de recursos criado para você no ambiente de área restrita.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Para implantar esse modelo no Azure, entre em sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou o Azure PowerShell e inicie sessão na mesma conta que ativou a sandbox.
No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.
Se o shell mostrado no lado direito da janela do terminal for powershell ou pwsh, o shell correto estará aberto e você poderá pular para a próxima seção.
Se um shell diferente de powershell ou pwsh for exibido, selecione a seta suspensa do shell e selecione PowerShell.
Na lista de shells de terminal, selecione powershell ou pwsh.
No terminal, vá para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:
Set-Location -Path templates
Iniciar sessão no Azure com o Azure PowerShell
No terminal de código do Visual Studio, execute o seguinte comando:
Connect-AzAccount
Um navegador é aberto para que você possa entrar em sua conta do Azure.
Depois de iniciar sessão no Azure, o terminal apresenta uma lista das subscrições associadas a esta conta.
Se você ativou a área restrita, uma assinatura chamada Assinatura do concierge será exibida. Use-o para o resto do exercício.
Defina a assinatura padrão para todos os comandos do Azure PowerShell executados nesta sessão.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Nota
Se você usou mais de uma área restrita recentemente, o terminal pode exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as próximas duas etapas para definir uma como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.
Obtenha o ID de subscrição. A execução do comando a seguir lista suas assinaturas e suas IDs.
Concierge Subscription
Procure e, em seguida, copie o ID da segunda coluna. Parece algo comoaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Altere sua assinatura ativa para a Assinatura do Concierge. Certifique-se de que substitui {O seu ID de subscrição} pelo que copiou.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Definir o grupo de recursos predefinido
Você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos do Azure PowerShell neste exercício. Defina esse padrão para o grupo de recursos criado para você no ambiente de área restrita.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Publicar o modelo como uma especificação de modelo
Publique a especificação do modelo usando este cmdlet do Azure PowerShell no terminal do Visual Studio Code:
New-AzTemplateSpec `
-ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
-Name ToyCosmosDBAccount `
-Location westus `
-DisplayName 'Cosmos DB account' `
-Description "This template spec creates a Cosmos DB account that meets our company's requirements." `
-Version '1.0' `
-TemplateFile main.bicep
New-AzTemplateSpec `
-ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
-Name ToyCosmosDBAccount `
-Location westus `
-DisplayName 'Cosmos DB account' `
-Description "This template spec creates a Cosmos DB account that meets our company's requirements." `
-Version '1.0' `
-TemplateFile azuredeploy.json
Publique a especificação do modelo usando este comando da CLI do Azure no terminal do Visual Studio Code:
az ts create \
--name ToyCosmosDBAccount \
--location westus \
--display-name "Cosmos DB account" \
--description "This template spec creates a Cosmos DB account that meets our company's requirements." \
--version 1.0 \
--template-file main.bicep
az ts create \
--name ToyCosmosDBAccount \
--location westus \
--display-name "Cosmos DB account" \
--description "This template spec creates a Cosmos DB account that meets our company's requirements." \
--version 1.0 \
--template-file azuredeploy.json
Usar o portal do Azure para verificar a especificação do modelo
Aceda ao portal do Azure e certifique-se de que está na subscrição sandbox:
- Selecione o seu avatar no canto superior direito da página.
- Selecione Trocar diretório. Na lista, selecione o diretório Sandbox do Microsoft Learn.
No painel esquerdo, selecione Grupos de recursos.
Selecione
[nome do grupo de recursos do sandbox] . Observe que a especificação do modelo está incluída na lista de recursos:Selecione ToyCosmosDBAccount para abrir a especificação do modelo. As versões e o arquivo de modelo são visíveis.
Implantar a especificação do modelo
Para simplificar, você implanta a especificação de modelo no mesmo grupo de recursos de área restrita em que a própria especificação de modelo está armazenada. Normalmente, você mantém as especificações do modelo em um grupo de recursos diferente. No entanto, os passos são os mesmos nos dois sentidos.
Obtenha a ID de recurso da versão da especificação do modelo executando o seguinte comando do Azure PowerShell:
$templateSpecVersionResourceId = (` Get-AzTemplateSpec ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name ToyCosmosDBAccount ` -Version 1.0 ` ).Versions[0].Id
Observe que você usa a
Versions
propriedade. Ao implantar uma especificação de modelo, você precisa fazer referência à ID do recurso da versão específica da especificação de modelo a ser usada.Implante a especificação de modelo usando este comando do Azure PowerShell no terminal de código do Visual Studio:
New-AzResourceGroupDeployment -TemplateSpecId $templateSpecVersionResourceId
Obtenha a ID de recurso da versão da especificação do modelo executando o seguinte comando da CLI do Azure:
id=$(az ts show \ --name ToyCosmosDBAccount \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --version "1.0" \ --query "id")
Implante a especificação do modelo usando este comando da CLI do Azure no terminal do Visual Studio Code:
az deployment group create --template-spec $id
A implantação pode levar um ou dois minutos para ser concluída.
Verificar sua implantação
No navegador, volte para o portal do Azure. Vá para o seu grupo de recursos.
Ao lado de Implantações, selecione o link 1 Êxito para ver os detalhes da implantação.
Selecione a implantação.
O nome da implantação pode ser diferente do nome do exemplo.
Selecione Detalhes da implantação para expandi-la. Confirme se uma conta do Azure Cosmos DB foi implantada.