Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Terraform permite a definição, visualização e implantação de infraestrutura em nuvem. Usando Terraform, você cria arquivos de configuração usando a sintaxe HCL. A sintaxe HCL permite especificar o provedor de nuvem - como o Azure - e os elementos que compõem sua infraestrutura de nuvem. Depois de criar os arquivos de configuração, você cria um plano de execução que permite visualizar as alterações na infraestrutura antes que elas sejam implantadas. Depois de verificar as alterações, você aplica o plano de execução para implantar a infraestrutura.
Neste artigo, você aprenderá a usar o provedor AzAPI Terraform para gerenciar um serviço do Azure que o provedor AzureRM atualmente não suporta. No código de exemplo, o azapi_resource é usado para gerir um recurso do Registro de Contêiner do Azure .
- Definir e configurar os provedores AzureRM e AzAPI
- Usar o provedor AzureRM para criar um grupo de recursos do Azure com um nome exclusivo
- Use o provedor AzureRM para registrar o provedor "Microsoft.ContainerRegistry" em sua assinatura
- Usar o provedor AzAPI para criar o recurso do Registro de Contêiner do Azure
Pré-requisitos
- Assinatura do Azure: se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
Configurar o Terraform: Se você ainda não tiver feito isso, configure o Terraform usando uma das seguintes opções:
Implementar o código Terraform
Nota
O código de exemplo para este artigo está localizado no repositório GitHub do Azure Terraform. Você pode visualizar o arquivo de log que contém os resultados do teste das versões atual e anterior do Terraform.
Veja mais artigos e código de exemplo mostrando como usar o Terraform para gerenciar recursos do Azure
Crie um diretório no qual testar o código Terraform de exemplo e torná-lo o diretório atual.
Crie um arquivo chamado
providers.tfe insira o seguinte código:terraform { required_providers { azapi = { source = "Azure/azapi" version = "~>2.0" } azurerm = { source = "hashicorp/azurerm" version = "~>4.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }Crie um arquivo chamado
variables.tfe insira o seguinte código:variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } variable "container_registry_name" { type = string default = "" description = "Name of the container registry." }Crie um arquivo chamado
main.tfe insira o seguinte código:# Create a resource group with a random name. resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } # Create a user assigned identity resource. resource "azurerm_user_assigned_identity" "example" { name = "example" resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location } # Create a random name for the container registry. resource "random_string" "acr_name" { length = 10 special = false upper = false numeric = false } # Manage a container registry resource. resource "azapi_resource" "example" { type = "Microsoft.ContainerRegistry/registries@2020-11-01-preview" name = coalesce(var.container_registry_name, random_string.acr_name.result) parent_id = azurerm_resource_group.rg.id location = azurerm_resource_group.rg.location identity { type = "SystemAssigned, UserAssigned" identity_ids = [azurerm_user_assigned_identity.example.id] } body = { sku = { name = "Standard" } properties = { adminUserEnabled = true } } tags = { "Key" = "Value" } response_export_values = ["properties.loginServer", "properties.policies.quarantinePolicy.status"] }Crie um arquivo chamado
outputs.tfe insira o seguinte código:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "azure_container_registry_name" { value = azapi_resource.example.name }
Inicializar o Terraform
Execute terraform init para inicializar a implantação do Terraform. Este comando baixa o provedor do Azure necessário para gerenciar seus recursos do Azure.
terraform init -upgrade
Pontos principais:
- O
-upgradeparâmetro atualiza os plug-ins de provedor necessários para a versão mais recente que está em conformidade com as restrições de versão da configuração.
Criar um plano de execução do Terraform
Execute terraform plan para criar um plano de execução.
terraform plan -out main.tfplan
Pontos principais:
- O
terraform plancomando cria um plano de execução, mas não o executa. Em vez disso, ele determina quais ações são necessárias para criar a configuração especificada em seus arquivos de configuração. Esse padrão permite que você verifique se o plano de execução corresponde às suas expectativas antes de fazer quaisquer alterações nos recursos reais. - O parâmetro opcional
-outpermite especificar um arquivo de saída para o plano. O uso do-outparâmetro garante que o plano revisado seja exatamente o que é aplicado.
Aplicar um plano de execução Terraform
Execute terraform apply para aplicar o plano de execução à sua infraestrutura de nuvem.
terraform apply main.tfplan
Pontos principais:
- O comando de exemplo
terraform applypressupõe que você executouterraform plan -out main.tfplananteriormente o . - Se você especificou um nome de arquivo diferente para o
-outparâmetro, use esse mesmo nome de arquivo na chamada paraterraform apply. - Se você não usou o
-outparâmetro, ligueterraform applysem nenhum parâmetro.
Verificar os resultados
- da CLI do Azure
- Azure PowerShell
Obtenha o nome do grupo de recursos.
resource_group_name=$(terraform output -raw resource_group_name)Obtenha o nome do registro do contêiner.
azure_container_registry_name=$(terraform output -raw azure_container_registry_name)Execute az acr show para exibir o registro do contêiner.
az acr show --name $azure_container_registry_name --resource-group $resource_group_name
Clean up resources (Limpar recursos)
Quando você não precisar mais dos recursos criados via Terraform, execute as seguintes etapas:
Execute o terraform plan e especifique a
destroyopção.terraform plan -destroy -out main.destroy.tfplanPontos principais:
- O
terraform plancomando cria um plano de execução, mas não o executa. Em vez disso, ele determina quais ações são necessárias para criar a configuração especificada em seus arquivos de configuração. Esse padrão permite que você verifique se o plano de execução corresponde às suas expectativas antes de fazer quaisquer alterações nos recursos reais. - O parâmetro opcional
-outpermite especificar um arquivo de saída para o plano. O uso do-outparâmetro garante que o plano revisado seja exatamente o que é aplicado.
- O
Execute terraform apply para aplicar o plano de execução.
terraform apply main.destroy.tfplan
Solucionar problemas do Terraform no Azure
Solucionar problemas comuns ao usar o Terraform no Azure