dependency/azapi_examples/Microsoft.DataProtection_backupVaults_backupInstances@2022-04-01/main.tf (190 lines of code) (raw):

terraform { required_providers { azapi = { source = "Azure/azapi" } } } provider "azapi" { skip_provider_registration = false } variable "resource_name" { type = string default = "acctest0001" } variable "location" { type = string default = "westeurope" } resource "azapi_resource" "resourceGroup" { type = "Microsoft.Resources/resourceGroups@2020-06-01" name = var.resource_name location = var.location } resource "azapi_resource" "server" { type = "Microsoft.DBforPostgreSQL/servers@2017-12-01" parent_id = azapi_resource.resourceGroup.id name = var.resource_name location = var.location body = { properties = { administratorLogin = "psqladmin" administratorLoginPassword = "H@Sh1CoR3!" createMode = "Default" infrastructureEncryption = "Disabled" minimalTlsVersion = "TLS1_2" publicNetworkAccess = "Enabled" sslEnforcement = "Enabled" storageProfile = { backupRetentionDays = 7 storageAutogrow = "Enabled" storageMB = 5120 } version = "9.5" } sku = { capacity = 2 family = "Gen5" name = "B_Gen5_2" tier = "Basic" } } schema_validation_enabled = false response_export_values = ["*"] } resource "azapi_resource" "backupVault" { type = "Microsoft.DataProtection/backupVaults@2022-04-01" parent_id = azapi_resource.resourceGroup.id name = var.resource_name location = var.location identity { type = "SystemAssigned" identity_ids = [] } body = { properties = { storageSettings = [ { datastoreType = "VaultStore" type = "LocallyRedundant" }, ] } } schema_validation_enabled = false response_export_values = ["*"] } resource "azapi_resource" "backupPolicy" { type = "Microsoft.DataProtection/backupVaults/backupPolicies@2022-04-01" parent_id = azapi_resource.backupVault.id name = var.resource_name body = { properties = { datasourceTypes = [ "Microsoft.DBforPostgreSQL/servers/databases", ] objectType = "BackupPolicy" policyRules = [ { backupParameters = { backupType = "Full" objectType = "AzureBackupParams" } dataStore = { dataStoreType = "VaultStore" objectType = "DataStoreInfoBase" } name = "BackupIntervals" objectType = "AzureBackupRule" trigger = { objectType = "ScheduleBasedTriggerContext" schedule = { repeatingTimeIntervals = [ "R/2021-05-23T02:30:00+00:00/P1W", ] } taggingCriteria = [ { isDefault = true tagInfo = { id = "Default_" tagName = "Default" } taggingPriority = 99 }, ] } }, { isDefault = true lifecycles = [ { deleteAfter = { duration = "P4M" objectType = "AbsoluteDeleteOption" } sourceDataStore = { dataStoreType = "VaultStore" objectType = "DataStoreInfoBase" } targetDataStoreCopySettings = [ ] }, ] name = "Default" objectType = "AzureRetentionRule" }, ] } } schema_validation_enabled = false response_export_values = ["*"] } resource "azapi_resource" "database" { type = "Microsoft.DBforPostgreSQL/servers/databases@2017-12-01" parent_id = azapi_resource.server.id name = var.resource_name body = { properties = { charset = "UTF8" collation = "English_United States.1252" } } schema_validation_enabled = false response_export_values = ["*"] } resource "azapi_resource" "backupInstance" { type = "Microsoft.DataProtection/backupVaults/backupInstances@2022-04-01" parent_id = azapi_resource.backupVault.id name = var.resource_name body = { properties = { dataSourceInfo = { datasourceType = "Microsoft.DBforPostgreSQL/servers/databases" objectType = "Datasource" resourceID = azapi_resource.database.id resourceLocation = azapi_resource.database.location resourceName = azapi_resource.database.name resourceType = "Microsoft.DBforPostgreSQL/servers/databases" resourceUri = "" } dataSourceSetInfo = { datasourceType = "Microsoft.DBforPostgreSQL/servers/databases" objectType = "DatasourceSet" resourceID = azapi_resource.server.id resourceLocation = azapi_resource.server.location resourceName = azapi_resource.server.name resourceType = "Microsoft.DBForPostgreSQL/servers" resourceUri = "" } datasourceAuthCredentials = null friendlyName = var.resource_name objectType = "BackupInstance" policyInfo = { policyId = azapi_resource.backupPolicy.id } } } schema_validation_enabled = false response_export_values = ["*"] }