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.
Use azapi_resource_action como um recurso Terraform gerido para realizar operações imperativas e de alteração de estado nos recursos do Azure. Neste exemplo, cria uma conta de armazenamento Azure e depois alterna as suas chaves de acesso.
azapi_resource_action tem duas formas de uso:
-
Recurso: Realiza uma operação de mudança de estado durante
terraform apply. O Terraform acompanha a ação no estado e pode, opcionalmente, revertê-la emterraform destroy. - Fonte de dados: Realiza uma operação de apenas leitura durante o planeamento. Consulte o início rápido da fonte de dados de ação de recurso para esse cenário.
Use o formulário de recursos quando precisar que o Terraform realize uma operação no Azure que não se baseie num ciclo de vida padrão de criar/ler/atualizar/eliminar — por exemplo, rodar credenciais, iniciar ou parar uma VM, ou desencadear um failover.
- Crie uma conta de armazenamento com o fornecedor AzureRM
- Rodar a chave de acesso à conta de armazenamento com
azapi_resource_action
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 {} } 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." } variable "storage_account_name_prefix" { type = string default = "st" description = "Prefix of the storage account 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" "storage_suffix" { length = 8 upper = false special = false } resource "azurerm_resource_group" "example" { location = var.resource_group_location name = random_pet.rg_name.id } resource "azurerm_storage_account" "example" { name = "${var.storage_account_name_prefix}${random_string.storage_suffix.result}" resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location account_tier = "Standard" account_replication_type = "LRS" } resource "azapi_resource_action" "regenerate_key" { type = "Microsoft.Storage/storageAccounts@2023-01-01" resource_id = azurerm_storage_account.example.id action = "regenerateKey" method = "POST" body = { keyName = "key1" } }Pontos-chave sobre a utilização
azapi_resource_actioncomo recurso:- O
actioncampo especifica a operação ARM a realizar. Para a rotação de chaves da conta de armazenamento, useregenerateKey. - O
methodcampo especifica o método HTTP. A maioria das ações imperativas utilizaPOST. - O
bodyatributo transmite dados para a ação. Para regeneração de chaves, especifique qual chave (key1oukey2) rotacionar. - A ação é realizada durante
terraform applye registada no estado Terraform.
- O
Crie um arquivo chamado
outputs.tfe insira o seguinte código:output "resource_group_name" { value = azurerm_resource_group.example.name } output "storage_account_name" { value = azurerm_storage_account.example.name }
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
Após a conclusão de terraform apply, a chave da conta de armazenamento foi rotacionada. Podes verificar a rotação das chaves verificando as chaves da conta de armazenamento no Azure.
Execute az storage account keys list para ver as chaves da conta de armazenamento.
az storage account keys list \
--resource-group <resource_group_name> \
--account-name <storage_account_name>
O value campo mostra a chave atual.
Exemplos de outras ações de recursos
O recurso azapi_resource_action funciona com muitas operações Azure. Aqui estão exemplos comuns:
-
Máquinas Virtuais:
deallocate,start,restart,powerOff,reimage -
Cofres de Chaves:
purge(para cofres eliminados de forma suave),rotate(para chaves geridas) -
Serviços de Aplicação:
swap(para slots de implementação),restart -
Bases de dados:
failover,promote - Compute resources: Qualquer operação exposta pela API REST do Azure que modifique o estado sem criar ou destruir um recurso
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