Udostępnij za pomocą


Szybki start: konfigurowanie kopii zapasowej dla usługi Azure Database for PostgreSQL — serwer elastyczny przy użyciu szablonu programu Terraform

W tym przewodniku Szybki start opisano sposób konfigurowania kopii zapasowej dla usługi Azure Database for PostgreSQL — serwer elastyczny przy użyciu szablonu narzędzia Terraform.

Usługa Azure Backup umożliwia tworzenie kopii zapasowych na Azure PostgreSQL — serwerów elastycznych przy użyciu wielu klientów, takich jak portal Azure, PowerShell, interfejs wiersza polecenia, usługa Azure Resource Manager, Bicep i inne.

Wymagania wstępne

Przed skonfigurowaniem kopii zapasowej dla usługi Azure Database for PostgreSQL — serwer elastyczny upewnij się, że zostały spełnione następujące wymagania wstępne:

  • Potrzebujesz konta platformy Azure z aktywną subskrypcją. Jeśli go nie masz, utwórz bezpłatne konto.

  • Zainstaluj i skonfiguruj rozwiązanie Terraform.

  • Zaloguj się do konta platformy Azure i uwierzytelnij się na platformie Azure.

    Uwaga

    Narzędzie Terraform obsługuje tylko uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure. Uwierzytelnianie przy użyciu programu Azure PowerShell nie jest obsługiwane. W związku z tym podczas wykonywania pracy narzędzia Terraform możesz użyć modułu Azure PowerShell, ale najpierw musisz uwierzytelnić się na platformie Azure.

Implementowanie kodu narzędzia Terraform

Uwaga

Zobacz więcej artykułów i przykładowego kodu pokazującego, jak zarządzać zasobami platformy Azure przy użyciu narzędzia Terraform.

  1. Utwórz katalog, którego można użyć do przetestowania przykładowego kodu narzędzia Terraform i ustaw go jako bieżący katalog.

  2. Utwórz plik o nazwie providers.tf i wstaw następujący kod:

    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>"
    }
    
  3. Utwórz plik o nazwie main.tf i wstaw następujący kod:

    
    # 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
      ]
    }
    
    
  4. Utwórz plik o nazwie variables.tf i wstaw następujący kod:


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"
}

Inicjowanie narzędzia Terraform

Uruchom narzędzie terraform init , aby zainicjować wdrożenie narzędzia Terraform. Polecenie to pobiera dostawcę Azure wymaganego do zarządzania zasobami Azure.

terraform init -upgrade

Kluczowe punkty:

  • Parametr -upgrade uaktualnia niezbędne wtyczki dostawcy do najnowszej wersji, która jest zgodna z ograniczeniami wersji konfiguracji.

Tworzenie planu wykonania programu Terraform

Uruchom terraform plan, aby utworzyć plan wykonania.

terraform plan -out main.tfplan

Kluczowe punkty:

  • Polecenie terraform plan tworzy plan wykonania, ale nie wykonuje go. Zamiast tego określa, jakie akcje są niezbędne do utworzenia konfiguracji określonej w plikach konfiguracji. Ten wzorzec umożliwia sprawdzenie, czy plan wykonania jest zgodny z oczekiwaniami przed wprowadzeniem jakichkolwiek zmian w rzeczywistych zasobach.
  • Opcjonalny -out parametr umożliwia określenie pliku wyjściowego dla planu. Użycie parametru -out gwarantuje, że sprawdzony plan jest dokładnie tym, co jest stosowane.

Zastosowanie planu wykonawczego Terraform

Uruchom terraform apply, aby zastosować plan wykonania do infrastruktury chmury.

terraform apply main.tfplan

Kluczowe punkty:

  • Przykładowe polecenie terraform apply zakłada, że wcześniej uruchomiono polecenie terraform plan -out main.tfplan.
  • Jeśli określono inną nazwę pliku parametru -out , użyj tej samej nazwy pliku w wywołaniu metody terraform apply.
  • Jeśli nie użyłeś parametru -out, wywołaj terraform apply bez żadnych parametrów.

Rozwiązywanie problemów z programem Terraform na platformie Azure

Rozwiązywanie typowych problemów podczas korzystania z programu Terraform na platformie Azure.

Następne kroki

Przywracanie usługi Azure Database for PostgreSQL — serwer elastyczny przy użyciu interfejsu wiersza polecenia platformy Azure.