Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Terraform permite a definição, a visualização e a implantação da infraestrutura de nuvem. Usando o Terraform, você cria arquivos de configuração usando a sintaxe HCL. A sintaxe da HCL permite que você especifique 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 de infraestrutura antes de serem implantadas. Depois de verificar as alterações, você aplica o plano de execução para implantar a infraestrutura.
Use azapi_data_plane_resource para gerenciar recursos do plano de dados do Azure no Terraform. Neste exemplo, você configura contatos de certificado para um Azure Key Vault.
Para obter conceitos fundamentais sobre como a estrutura do plano de dados funciona e parent_id os padrões, consulte Understand the AzAPI data plane framework.
- Criar um Key Vault com o provedor do AzureRM
- Usar
azapi_data_plane_resourcepara configurar contatos de certificado
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 fez isso, configure o Terraform usando uma das seguintes opções:
Quando você faz logon no portal do Azure com uma conta da Microsoft, a assinatura padrão do Azure para essa conta é usada.
O Terraform autentica automaticamente usando informações da assinatura padrão do Azure.
Execute az account show para verificar a conta atual da Microsoft e a assinatura do Azure.
az account show
Todas as alterações feitas por meio do Terraform estão na assinatura exibida do Azure. Se é isso que você quer, ignore o restante deste artigo.
Implementar o código Terraform
Crie um diretório em que você vai testar o código de exemplo do Terraform, depois transforme-o no 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 { key_vault { purge_soft_delete_on_destroy = true recover_soft_deleted_key_vaults = true } } } provider "azapi" {}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 value to create a unique name." }Crie um arquivo chamado
main.tfe insira o seguinte código:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "random_string" "kv_suffix" { length = 6 upper = false special = false } resource "azurerm_resource_group" "example" { location = var.resource_group_location name = random_pet.rg_name.id } data "azurerm_client_config" "current" {} resource "azurerm_key_vault" "example" { name = "kv-${random_string.kv_suffix.result}" location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name tenant_id = data.azurerm_client_config.current.tenant_id sku_name = "standard" access_policy { tenant_id = data.azurerm_client_config.current.tenant_id object_id = data.azurerm_client_config.current.object_id certificate_permissions = [ "ManageContacts", ] } } resource "azapi_data_plane_resource" "certificate_contacts" { type = "Microsoft.KeyVault/vaults/certificates/contacts@7.3" parent_id = trimsuffix(trimprefix(azurerm_key_vault.example.vault_uri, "https://"), "/") name = "default" body = { contacts = [ { emailAddress = "admin@contoso.com" name = "Admin Contact" phone = "555-555-0100" }, { emailAddress = "ops@contoso.com" name = "Operations" } ] } }Principais pontos sobre
azapi_data_plane_resource:- O
typecampo usa o formato<resource-type>@<api-version>para a API do plano de dados. -
parent_idé o nome do host do ponto de extremidade do plano de dados (sem o prefixohttps://), não uma ID de recurso ARM. - O
namecampo identifica o recurso específico dentro do pai. Para contatos de certificado do Key Vault, o valor é sempredefault.
- O
Crie um arquivo chamado
outputs.tfe insira o seguinte código:output "resource_group_name" { value = azurerm_resource_group.example.name } output "key_vault_name" { value = azurerm_key_vault.example.name } output "certificate_contacts" { value = azapi_data_plane_resource.certificate_contacts.output }
Execute terraform init para inicializar a implantação do Terraform. Esse comando baixa o provedor de Azure necessário para gerenciar seus recursos de Azure.
terraform init -upgrade
Pontos principais:
- O parâmetro
-upgradeatualiza os plug-ins do provedor necessários para a versão mais recente que esteja em conformidade com as restrições de versão da configuração.
Execute o comando terraform plan para criar um plano de execução.
terraform plan -out main.tfplan
Pontos principais:
- O comando
terraform plancria 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 verificar se o plano de execução corresponde às suas expectativas antes de fazer alterações nos recursos reais. - O parâmetro opcional
-outpermite que você especifique um arquivo de saída para o plano. Usar o parâmetro-outgarante que o plano que você examinou seja exatamente o que é aplicado.
Execute o comando 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. - Se você especificou um nome de arquivo diferente para o parâmetro
-out, use esse mesmo nome de arquivo na chamada paraterraform apply. - Se você não usou o parâmetro
-out, chameterraform applysem nenhum parâmetro.
Verifique os resultados
Execute az keyvault certificate contact list para recuperar os contatos do certificado.
az keyvault certificate contact list --vault-name <key_vault_name>
Limpar os recursos
Quando você não precisar mais dos recursos criados por meio do Terraform, execute as seguintes etapas:
Execute o comando terraform plan e especifique a flag
destroy.terraform plan -destroy -out main.destroy.tfplanPontos principais:
- O comando
terraform plancria 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 verificar se o plano de execução corresponde às suas expectativas antes de fazer alterações nos recursos reais. - O parâmetro opcional
-outpermite que você especifique um arquivo de saída para o plano. Usar o parâmetro-outgarante que o plano que você examinou seja exatamente o que é aplicado.
- O comando
Execute o comando 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