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.
Este guia de início rápido descreve como configurar o backup para o Banco de Dados do Azure para PostgreSQL - Servidor Flexível usando o modelo Terraform.
O Backup do Azure permite que você faça backup do Azure PostgreSQL - Servidores flexíveis usando vários clientes, como portal do Azure, PowerShell, CLI, Gerenciador de Recursos do Azure, Bíceps e assim por diante.
Pré-requisitos
Antes de configurar o backup para o Banco de Dados do Azure para PostgreSQL - Servidor Flexível, verifique se os seguintes pré-requisitos são atendidos:
Você precisa de uma conta do Azure com uma assinatura ativa. Se você não tiver uma, crie uma conta gratuitamente.
Entre na sua conta do Azure e autentique-se no Azure.
Note
O Terraform só dá suporte à autenticação no Azure com a CLI do Azure. Não há suporte para autenticação usando o Azure PowerShell. Portanto, embora você possa usar o módulo do Azure PowerShell ao fazer seu trabalho Terraform, primeiro precisa se autenticar no Azure.
Implementar o código Terraform
Note
Veja mais artigos e código de exemplo mostrando como usar o Terraform para gerenciar recursos do Azure.
Crie um diretório que você pode usar para testar o código Terraform de exemplo e torná-lo seu diretório atual.
Crie um arquivo chamado
providers.tfe insira o seguinte código:terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "3.99.0" } } } provider "azurerm" { features {} subscription_id = "<azure_subscription_id>" tenant_id = "<azure_subscription_tenant_id>" }Crie um arquivo chamado
main.tfe insira o seguinte código:# Step 1: Create the Backup Vault resource "azurerm_data_protection_backup_vault" "backup_vault" { name = var.backup_vault_name resource_group_name = var.backup_vault_resource_group location = var.region identity { type = "SystemAssigned" } storage_settings { datastore_type = "VaultStore" type = "LocallyRedundant" } } # Step 2: Create Backup Policy for PostgreSQL resource "azurerm_data_protection_backup_policy" "postgresql_backup_policy" { name = var.policy_name resource_group_name = var.backup_vault_resource_group vault_name = azurerm_data_protection_backup_vault.backup_vault.name rule { name = "BackupSchedule" backup_parameters { object_type = "AzureBackupParams" } trigger { schedule { recurrence_rule { frequency = "Weekly" interval = var.backup_schedule_frequency } } } data_store { datastore_type = "VaultStore" } } retention_rule { name = "RetentionRule" is_default = true lifecycle { delete_after { object_type = "AbsoluteDeleteOption" duration = format("P%dM", var.retention_duration_in_months) } } } depends_on = [ azurerm_data_protection_backup_vault.backup_vault ] } # Step 3: Role Assignment for PostgreSQL Flexible Server Long Term Retention Backup Role data "azurerm_postgresql_flexible_server" "postgresql_server" { name = var.postgresql_server_name resource_group_name = var.postgresql_resource_group } resource "azurerm_role_assignment" "backup_role" { principal_id = azurerm_data_protection_backup_vault.backup_vault.identity[0].principal_id role_definition_name = "PostgreSQL Flexible Server Long Term Retention Backup Role" scope = data.azurerm_postgresql_flexible_server.PostgreSQL_server.id depends_on = [ azurerm_data_protection_backup_policy.postgresql_backup_policy ] } # Step 4: Role Assignment for Reader on Resource Group data "azurerm_resource_group" "postgresql_resource_group" { name = var.postgresql_resource_group } resource "azurerm_role_assignment" "reader_role" { principal_id = azurerm_data_protection_backup_vault.backup_vault.identity[0].principal_id role_definition_name = "Reader" scope = data.azurerm_resource_group.postgresql_resource_group.id depends_on = [ azurerm_role_assignment.backup_role ] } # Step 5: Create Backup Instance for PostgreSQL resource "azurerm_data_protection_backup_instance" "postgresql_backup_instance" { name = "PostgreSQLBackupInstance" resource_group_name = var.backup_vault_resource_group vault_name = azurerm_data_protection_backup_vault.backup_vault.name location = var.region datasource { object_type = "Datasource" datasource_type = "AzureDatabaseForPostgreSQLFlexibleServer" resource_id = data.azurerm_PostgreSQL_flexible_server.postgresql_server.id } policy_id = azurerm_data_protection_backup_policy.postgresql_backup_policy.id depends_on = [ azurerm_role_assignment.reader_role ] }Crie um arquivo chamado
variables.tfe insira o seguinte código:
variable "backup_vault_name" {
type = string
default = "BackupVaultTF"
description = "Name of the Backup Vault"
}
variable "backup_vault_resource_group" {
type = string
default = "Contoso_TF_RG"
description = "Name of the resource group to which backup vault belongs to"
}
variable "postgresql_server_name" {
type = string
default = "Contoso_PostgreSQL_TF"
description = "Name of the PostgreSQL server"
}
variable "postgresql_resource_group" {
type = string
default = "Contoso_TF_RG"
description = "Name of the resource group to which PostgreSQL server belongs to"
}
variable "region" {
type = string
default = "eastus"
description = "Location of the PostgreSQL server"
}
variable "policy_name" {
type = string
default = "PostgreSQLbackuppolicytfv1"
description = "Name of the backup policy"
}
variable "backup_schedule_frequency" {
type = string
default = "1"
description = "Schedule frequency for backup"
}
variable "retention_duration_in_months" {
type = string
default = "3"
description = "Retention duration for backup in month"
}
Inicializar 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 parâmetro
-upgradeatualiza 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 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 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 do 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 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 você não usou o parâmetro
-out, chameterraform applysem nenhum parâmetro.
Solucionar problemas do Terraform no Azure
Solucione problemas comuns ao usar o Terraform no Azure.
Próximos passos
Restaure o Banco de Dados do Azure para PostgreSQL - Servidor flexível usando a CLI do Azure.