Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 criares os ficheiros de configuração, crias um plano de execução que te permite pré-visualizar as alterações da infraestrutura antes de serem implementadas. Depois de verificares as alterações, aplicas o plano de execução para implementar a infraestrutura.
Utilize azapi_data_plane_resource para gerir os recursos do plano de dados do Azure no Terraform. Neste exemplo, configura contactos de certificado para um Azure Key Vault.
Para conceitos fundamentais sobre como funciona a estrutura do plano de dados e parent_id os padrões, consulte Compreender a estrutura do plano de dados AzAPI.
- Crie um Key Vault com o fornecedor AzureRM
- Utilização
azapi_data_plane_resourcepara configurar contactos de certificados
Pré-requisitos
- Subscrição do Azure: Se não tiver uma subscrição 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:
Quando inicia sessão no portal do Azure com uma conta Microsoft, é utilizada a subscrição predefinida do Azure para essa conta.
O Terraform autentica automaticamente usando informações da assinatura padrão do Azure.
Execute az account show para verificar a conta Microsoft atual e a assinatura do Azure.
az account show
As alterações que fizer através do Terraform serão aplicadas à subscrição do Azure exibida. Se é isso que você quer, pule o resto deste artigo.
Implementar o código Terraform
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 { 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" } ] } }Pontos-chave sobre
azapi_data_plane_resource:- O
typecampo utiliza o formato<resource-type>@<api-version>da API do plano de dados. - O
parent_idé o nome de host do endpoint do plano de dados (sem ohttps://prefixo), não um ID de recurso ARM. - O
namecampo identifica o recurso específico dentro do elemento pai. Para contatos de certificados 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. Este comando descarrega o fornecedor Azure necessário para gerir os seus recursos Azure.
terraform init -upgrade
Pontos principais:
- O
-upgradeparâmetro atualiza os plugins do fornecedor necessários para a versão mais recente que cumpra 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
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-lhe especificar um ficheiro de saída para o plano. Usar o-outparâmetro garante que o plano que analisou é exatamente o que é aplicado.
Executa o Terraform Application para aplicar o plano de execução à tua infraestrutura cloud.
terraform apply main.tfplan
Pontos principais:
- O comando de exemplo
terraform applypressupõe que já executasteterraform 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 não usaste o
-outparâmetro, chamaterraform applysem nenhum parâmetro.
Verificar os resultados
Execute az keyvault certificate contact list para recuperar os contactos do certificado.
az keyvault certificate contact list --vault-name <key_vault_name>
Limpeza de recursos
Quando já não precisares dos recursos criados via Terraform, faz os seguintes passos:
Execute terraform plan e especifique o parâmetro
destroy.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-lhe especificar um ficheiro de saída para o plano. Usar o-outparâmetro garante que o plano que analisou é 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