diff --git a/README.md b/README.md
index 650840416..787c5f6f2 100644
--- a/README.md
+++ b/README.md
@@ -37,6 +37,7 @@ Currently available modules:
- **development** - [API Gateway](./modules/api-gateway), [Apigee](./modules/apigee), [Artifact Registry](./modules/artifact-registry), [Cloud Build V2 Connection](./modules/cloud-build-v2-connection), [Container Registry](./modules/container-registry), [Cloud Source Repository](./modules/source-repository), [Cloud Deploy](./modules/cloud-deploy), [Secure Source Manager instance](./modules/secure-source-manager-instance), [Workstation cluster](./modules/workstation-cluster)
- **security** - [Binauthz](./modules/binauthz/), [Certificate Authority Service (CAS)](./modules/certificate-authority-service), [KMS](./modules/kms), [SecretManager](./modules/secret-manager), [VPC Service Control](./modules/vpc-sc), [Certificate Manager](./modules/certificate-manager/)
- **serverless** - [Cloud Function v1](./modules/cloud-function-v1), [Cloud Function v2](./modules/cloud-function-v2), [Cloud Run v2](./modules/cloud-run-v2)
+- **other** - [Backup DR](./modules/backup-dr)
For more information and usage examples see each module's README file.
diff --git a/modules/README.md b/modules/README.md
index c85a16893..6eabc99f1 100644
--- a/modules/README.md
+++ b/modules/README.md
@@ -132,3 +132,7 @@ These modules are used in the examples included in this repository. If you are u
- [Cloud Functions v1](./cloud-function-v1)
- [Cloud Functions v2](./cloud-function-v2)
- [Cloud Run v2](./cloud-run-v2)
+
+## Other
+
+- [Backup DR](./backup-dr)
diff --git a/modules/backup-dr/README.md b/modules/backup-dr/README.md
new file mode 100644
index 000000000..ca6f68f42
--- /dev/null
+++ b/modules/backup-dr/README.md
@@ -0,0 +1,203 @@
+# Terraform Google Backup DR Plan
+
+This Terraform module creates a Google Cloud Backup and DR backup plan and, optionally, a backup vault.
+
+## Description
+
+This module allows you to define a backup plan for your Google Cloud resources. You can specify backup rules, including schedules and retention policies. The module can also create a new backup vault or use an existing one.
+
+## Examples
+
+
+- [Description](#description)
+- [Examples](#examples)
+ - [Create backup vault (basic usage)](#create-backup-vault-basic-usage)
+ - [Create backup vault (extended options)](#create-backup-vault-extended-options)
+ - [Create vault and plan](#create-vault-and-plan)
+ - [Create only backup plan with existing vault](#create-only-backup-plan-with-existing-vault)
+ - [Create management_server](#create-management_server)
+- [Variables](#variables)
+- [Outputs](#outputs)
+
+
+### Create backup vault (basic usage)
+```hcl
+module "dr_example" {
+ source = "./fabric/modules/backup-dr"
+ project_id = "your-gcp-project-id"
+ location = "us-central1"
+ name = "backup-vault-01"
+}
+# tftest modules=1 resources=1
+```
+
+### Create backup vault (extended options)
+```hcl
+module "dr_example" {
+ source = "./fabric/modules/backup-dr"
+ project_id = "your-gcp-project-id"
+ location = "us-central1"
+ name = "backup-vault"
+ vault_config = {
+ access_restriction = "WITHIN_ORGANIZATION"
+ annotations = {
+ "key" = "value"
+ }
+ backup_minimum_enforced_retention_duration = "100000s"
+ backup_retention_inheritance = "INHERIT_VAULT_RETENTION"
+ description = "Backup Vault managed by Terraform IAC."
+ allow_missing = false
+ force_update = false
+ ignore_backup_plan_references = false
+ ignore_inactive_datasources = false
+ labels = {
+ "key" = "value"
+ }
+ }
+}
+# tftest inventory=extended.yaml
+```
+
+### Create vault and plan
+```hcl
+module "dr_example" {
+ source = "./fabric/modules/backup-dr"
+ project_id = "your-gcp-project-id"
+ location = "us-central1"
+ name = "backup-vault"
+
+ backup_plans = {
+ my-backup-plan = {
+ resource_type = "compute.googleapis.com/Instance"
+ description = "Backup Plan for GCE Instances."
+ backup_rules = [
+ {
+ rule_id = "daily-backup-rule"
+ backup_retention_days = 30
+ standard_schedule = {
+ recurrence_type = "HOURLY"
+ hourly_frequency = 6
+ time_zone = "America/Los_Angeles"
+ backup_window = {
+ start_hour_of_day = 1
+ end_hour_of_day = 5
+ }
+ }
+ },
+ {
+ rule_id = "monthly-backup-rule"
+ backup_retention_days = 30
+ standard_schedule = {
+ recurrence_type = "MONTHLY"
+ time_zone = "America/Los_Angeles"
+ week_day_of_month = {
+ week_of_month = "FIRST"
+ day_of_week = "MONDAY"
+ }
+ backup_window = {
+ start_hour_of_day = 1
+ end_hour_of_day = 5
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+# tftest inventory=vault-plan.yaml
+```
+
+### Create only backup plan with existing vault
+```hcl
+module "dr_example" {
+ source = "./fabric/modules/backup-dr"
+ project_id = "your-gcp-project-id"
+ location = "us-central1"
+
+ vault_reuse = {
+ vault_id = "backup-vault-test"
+ }
+
+ backup_plans = {
+ "my-backup-plan" = {
+ resource_type = "compute.googleapis.com/Instance"
+ description = "Backup Plan for GCE Instances."
+ backup_rules = [
+ {
+ rule_id = "daily-backup-rule"
+ backup_retention_days = 30
+ standard_schedule = {
+ recurrence_type = "HOURLY"
+ hourly_frequency = 6
+ time_zone = "America/Los_Angeles"
+ backup_window = {
+ start_hour_of_day = 1
+ end_hour_of_day = 5
+ }
+ }
+ },
+ {
+ rule_id = "monthly-backup-rule"
+ backup_retention_days = 30
+ standard_schedule = {
+ recurrence_type = "MONTHLY"
+ time_zone = "America/Los_Angeles"
+ week_day_of_month = {
+ week_of_month = "FIRST"
+ day_of_week = "MONDAY"
+ }
+ backup_window = {
+ start_hour_of_day = 1
+ end_hour_of_day = 5
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+# tftest inventory=reuse.yaml
+```
+
+### Create management_server
+```hcl
+module "dr_example" {
+ source = "./fabric/modules/backup-dr"
+ project_id = "your-gcp-project-id"
+ location = "us-central1"
+
+ management_server_config = {
+ name = "backup-dr-mgmt-server"
+ location = "us-central1"
+ type = "BACKUP_RESTORE"
+ network_config = {
+ network = "default"
+ peering_mode = "PRIVATE_SERVICE_ACCESS"
+ }
+ }
+}
+# tftest inventory=server.yaml
+```
+
+
+## Variables
+
+| name | description | type | required | default |
+|---|---|:---:|:---:|:---:|
+| [location](variables.tf#L47) | Location for the Backup Vault and Plans (e.g. us-central1). | string | ✓ | |
+| [project_id](variables.tf#L71) | Project ID. | string | ✓ | |
+| [backup_plans](variables.tf#L17) | Map of Backup Plans to create in this Vault. | map(object({…})) | | {} |
+| [management_server_config](variables.tf#L52) | Configuration to create a Management Server. If null, no server is created. | object({…}) | | null |
+| [name](variables.tf#L65) | Name of the Backup Vault to create. Leave null if reusing an existing vault via `vault_reuse`. | string | | null |
+| [vault_config](variables.tf#L76) | Configuration for the Backup Vault. Only used if `vault_reuse` is null. | object({…}) | | {} |
+| [vault_reuse](variables.tf#L93) | Configuration to reuse an existing Backup Vault. | object({…}) | | null |
+
+## Outputs
+
+| name | description | sensitive |
+|---|---|:---:|
+| [backup_plans](outputs.tf#L16) | The ID of the created Backup Plans. | |
+| [backup_vault_id](outputs.tf#L21) | The ID of the Backup Vault. | |
+| [management_server](outputs.tf#L26) | The Management Server created. | |
+| [management_server_uri](outputs.tf#L31) | The Management Server ID created. | |
+
diff --git a/modules/backup-dr/main.tf b/modules/backup-dr/main.tf
new file mode 100644
index 000000000..4c81a66b5
--- /dev/null
+++ b/modules/backup-dr/main.tf
@@ -0,0 +1,87 @@
+/**
+ * Copyright 2025 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+resource "google_backup_dr_backup_vault" "backup_vault" {
+ count = var.name != null && var.vault_reuse == null ? 1 : 0
+ project = var.project_id
+ location = var.location
+ backup_vault_id = var.name
+ description = var.vault_config.description
+ backup_minimum_enforced_retention_duration = var.vault_config.backup_minimum_enforced_retention_duration
+ annotations = var.vault_config.annotations
+ labels = var.vault_config.labels
+ force_update = var.vault_config.force_update
+ access_restriction = var.vault_config.access_restriction
+ backup_retention_inheritance = var.vault_config.backup_retention_inheritance
+ ignore_inactive_datasources = var.vault_config.ignore_inactive_datasources
+ ignore_backup_plan_references = var.vault_config.ignore_backup_plan_references
+ allow_missing = var.vault_config.allow_missing
+}
+
+resource "google_backup_dr_backup_plan" "backup_plan" {
+ for_each = var.backup_plans
+ project = var.project_id
+ backup_plan_id = each.key
+ description = each.value.description
+ location = var.location
+ resource_type = each.value.resource_type
+ backup_vault = var.vault_reuse != null ? var.vault_reuse.vault_id : one(google_backup_dr_backup_vault.backup_vault[*].id)
+
+ dynamic "backup_rules" {
+ for_each = each.value.backup_rules
+ content {
+ rule_id = backup_rules.value.rule_id
+ backup_retention_days = backup_rules.value.backup_retention_days
+
+ standard_schedule {
+ recurrence_type = backup_rules.value.standard_schedule.recurrence_type
+
+ hourly_frequency = backup_rules.value.standard_schedule.hourly_frequency
+ days_of_week = backup_rules.value.standard_schedule.days_of_week
+ days_of_month = backup_rules.value.standard_schedule.days_of_month
+ months = backup_rules.value.standard_schedule.months
+ dynamic "week_day_of_month" {
+ for_each = try(backup_rules.value.standard_schedule.week_day_of_month != null ? [backup_rules.value.standard_schedule.week_day_of_month] : [])
+ content {
+ week_of_month = week_day_of_month.value.week_of_month
+ day_of_week = week_day_of_month.value.day_of_week
+ }
+ }
+ time_zone = backup_rules.value.standard_schedule.time_zone
+ backup_window {
+ start_hour_of_day = backup_rules.value.standard_schedule.backup_window.start_hour_of_day
+ end_hour_of_day = backup_rules.value.standard_schedule.backup_window.end_hour_of_day
+ }
+ }
+ }
+ }
+}
+
+resource "google_backup_dr_management_server" "management_server" {
+ count = var.management_server_config != null ? 1 : 0
+ project = var.project_id
+ location = var.location
+ name = var.management_server_config.name
+ type = var.management_server_config.type
+
+ dynamic "networks" {
+ for_each = var.management_server_config.network_config != null ? [var.management_server_config.network_config] : []
+ content {
+ network = networks.value.network
+ peering_mode = networks.value.peering_mode
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/backup-dr/outputs.tf b/modules/backup-dr/outputs.tf
new file mode 100644
index 000000000..d473eca22
--- /dev/null
+++ b/modules/backup-dr/outputs.tf
@@ -0,0 +1,34 @@
+/**
+ * Copyright 2025 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+output "backup_plans" {
+ description = "The ID of the created Backup Plans."
+ value = google_backup_dr_backup_plan.backup_plan
+}
+
+output "backup_vault_id" {
+ description = "The ID of the Backup Vault."
+ value = var.name != null ? one(google_backup_dr_backup_vault.backup_vault[*].id) : null
+}
+
+output "management_server" {
+ description = "The Management Server created."
+ value = var.management_server_config != null ? one(google_backup_dr_management_server.management_server) : null
+}
+
+output "management_server_uri" {
+ description = "The Management Server ID created."
+ value = var.management_server_config != null ? one(google_backup_dr_management_server.management_server[*].management_uri) : null
+}
\ No newline at end of file
diff --git a/modules/backup-dr/variables.tf b/modules/backup-dr/variables.tf
new file mode 100644
index 000000000..3662eb250
--- /dev/null
+++ b/modules/backup-dr/variables.tf
@@ -0,0 +1,103 @@
+/**
+ * Copyright 2025 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+variable "backup_plans" {
+ description = "Map of Backup Plans to create in this Vault."
+ type = map(object({
+ resource_type = string
+ description = optional(string)
+ backup_rules = list(object({
+ rule_id = string
+ backup_retention_days = number
+ standard_schedule = object({
+ recurrence_type = string
+ hourly_frequency = optional(number)
+ days_of_week = optional(list(string))
+ days_of_month = optional(list(number))
+ months = optional(list(string))
+ week_day_of_month = optional(object({
+ week_of_month = string
+ day_of_week = string
+ }))
+ time_zone = string
+ backup_window = object({
+ start_hour_of_day = number
+ end_hour_of_day = number
+ })
+ })
+ }))
+ }))
+ default = {}
+ nullable = false
+}
+
+variable "location" {
+ description = "Location for the Backup Vault and Plans (e.g. us-central1)."
+ type = string
+}
+
+variable "management_server_config" {
+ description = "Configuration to create a Management Server. If null, no server is created."
+ type = object({
+ name = string
+ type = optional(string, "BACKUP_RESTORE")
+ network_config = optional(object({
+ network = string
+ peering_mode = optional(string, "PRIVATE_SERVICE_ACCESS")
+ }))
+ })
+ default = null
+}
+
+variable "name" {
+ description = "Name of the Backup Vault to create. Leave null if reusing an existing vault via `vault_reuse`."
+ type = string
+ default = null
+}
+
+variable "project_id" {
+ description = "Project ID."
+ type = string
+}
+
+variable "vault_config" {
+ description = "Configuration for the Backup Vault. Only used if `vault_reuse` is null."
+ type = object({
+ description = optional(string)
+ labels = optional(map(string), {})
+ annotations = optional(map(string), {})
+ access_restriction = optional(string)
+ backup_minimum_enforced_retention_duration = optional(string, "100000s")
+ backup_retention_inheritance = optional(string)
+ force_update = optional(bool, false)
+ ignore_inactive_datasources = optional(bool, false)
+ ignore_backup_plan_references = optional(bool, false)
+ allow_missing = optional(bool, false)
+ })
+ default = {}
+}
+
+variable "vault_reuse" {
+ description = "Configuration to reuse an existing Backup Vault."
+ type = object({
+ vault_id = string
+ })
+ default = null
+ validation {
+ condition = var.name == null || var.vault_reuse == null
+ error_message = "name and vault_reuse can not be used together."
+ }
+}
\ No newline at end of file
diff --git a/modules/backup-dr/versions.tf b/modules/backup-dr/versions.tf
new file mode 100644
index 000000000..e4d8ced0b
--- /dev/null
+++ b/modules/backup-dr/versions.tf
@@ -0,0 +1,35 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Fabric release: v49.0.0
+
+terraform {
+ required_version = ">= 1.12.2"
+ required_providers {
+ google = {
+ source = "hashicorp/google"
+ version = ">= 7.6.0, < 8.0.0" # tftest
+ }
+ google-beta = {
+ source = "hashicorp/google-beta"
+ version = ">= 7.6.0, < 8.0.0" # tftest
+ }
+ }
+ provider_meta "google" {
+ module_name = "google-pso-tool/cloud-foundation-fabric/modules/backup-dr:v49.0.0-tf"
+ }
+ provider_meta "google-beta" {
+ module_name = "google-pso-tool/cloud-foundation-fabric/modules/backup-dr:v49.0.0-tf"
+ }
+}
diff --git a/modules/backup-dr/versions.tofu b/modules/backup-dr/versions.tofu
new file mode 100644
index 000000000..dac6d8857
--- /dev/null
+++ b/modules/backup-dr/versions.tofu
@@ -0,0 +1,35 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Fabric release: v49.0.0
+
+terraform {
+ required_version = ">= 1.10.0"
+ required_providers {
+ google = {
+ source = "hashicorp/google"
+ version = ">= 7.6.0, < 8.0.0" # tftest
+ }
+ google-beta = {
+ source = "hashicorp/google-beta"
+ version = ">= 7.6.0, < 8.0.0" # tftest
+ }
+ }
+ provider_meta "google" {
+ module_name = "google-pso-tool/cloud-foundation-fabric/modules/backup-dr:v49.0.0-tofu"
+ }
+ provider_meta "google-beta" {
+ module_name = "google-pso-tool/cloud-foundation-fabric/modules/backup-dr:v49.0.0-tofu"
+ }
+}
diff --git a/tests/modules/backup_dr/examples/extended.yaml b/tests/modules/backup_dr/examples/extended.yaml
new file mode 100644
index 000000000..bf1f3f3b4
--- /dev/null
+++ b/tests/modules/backup_dr/examples/extended.yaml
@@ -0,0 +1,49 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+values:
+ module.dr_example.google_backup_dr_backup_vault.backup_vault[0]:
+ access_restriction: WITHIN_ORGANIZATION
+ allow_missing: false
+ annotations:
+ key: value
+ backup_minimum_enforced_retention_duration: 100000s
+ backup_retention_inheritance: INHERIT_VAULT_RETENTION
+ backup_vault_id: backup-vault
+ description: Backup Vault managed by Terraform IAC.
+ effective_annotations:
+ key: value
+ effective_labels:
+ goog-terraform-provisioned: 'true'
+ key: value
+ effective_time: null
+ force_delete: false
+ force_update: false
+ ignore_backup_plan_references: false
+ ignore_inactive_datasources: false
+ labels:
+ key: value
+ location: us-central1
+ project: your-gcp-project-id
+ terraform_labels:
+ goog-terraform-provisioned: 'true'
+ key: value
+ timeouts: null
+
+counts:
+ google_backup_dr_backup_vault: 1
+ modules: 1
+ resources: 1
+
+outputs: {}
diff --git a/tests/modules/backup_dr/examples/reuse.yaml b/tests/modules/backup_dr/examples/reuse.yaml
new file mode 100644
index 000000000..29ee17f6d
--- /dev/null
+++ b/tests/modules/backup_dr/examples/reuse.yaml
@@ -0,0 +1,60 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+values:
+ module.dr_example.google_backup_dr_backup_plan.backup_plan["my-backup-plan"]:
+ backup_plan_id: my-backup-plan
+ backup_rules:
+ - backup_retention_days: 30
+ rule_id: daily-backup-rule
+ standard_schedule:
+ - backup_window:
+ - end_hour_of_day: 5
+ start_hour_of_day: 1
+ days_of_month: null
+ days_of_week: null
+ hourly_frequency: 6
+ months: null
+ recurrence_type: HOURLY
+ time_zone: America/Los_Angeles
+ week_day_of_month: []
+ - backup_retention_days: 30
+ rule_id: monthly-backup-rule
+ standard_schedule:
+ - backup_window:
+ - end_hour_of_day: 5
+ start_hour_of_day: 1
+ days_of_month: null
+ days_of_week: null
+ hourly_frequency: null
+ months: null
+ recurrence_type: MONTHLY
+ time_zone: America/Los_Angeles
+ week_day_of_month:
+ - day_of_week: MONDAY
+ week_of_month: FIRST
+ backup_vault: backup-vault-test
+ description: Backup Plan for GCE Instances.
+ location: us-central1
+ log_retention_days: null
+ project: your-gcp-project-id
+ resource_type: compute.googleapis.com/Instance
+ timeouts: null
+
+counts:
+ google_backup_dr_backup_plan: 1
+ modules: 1
+ resources: 1
+
+outputs: {}
diff --git a/tests/modules/backup_dr/examples/server.yaml b/tests/modules/backup_dr/examples/server.yaml
new file mode 100644
index 000000000..b821698cf
--- /dev/null
+++ b/tests/modules/backup_dr/examples/server.yaml
@@ -0,0 +1,31 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+values:
+ module.dr_example.google_backup_dr_management_server.management_server[0]:
+ location: us-central1
+ name: backup-dr-mgmt-server
+ networks:
+ - network: default
+ peering_mode: PRIVATE_SERVICE_ACCESS
+ project: your-gcp-project-id
+ timeouts: null
+ type: BACKUP_RESTORE
+
+counts:
+ google_backup_dr_management_server: 1
+ modules: 1
+ resources: 1
+
+outputs: {}
diff --git a/tests/modules/backup_dr/examples/vault-plan.yaml b/tests/modules/backup_dr/examples/vault-plan.yaml
new file mode 100644
index 000000000..632640567
--- /dev/null
+++ b/tests/modules/backup_dr/examples/vault-plan.yaml
@@ -0,0 +1,81 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+values:
+ module.dr_example.google_backup_dr_backup_plan.backup_plan["my-backup-plan"]:
+ backup_plan_id: my-backup-plan
+ backup_rules:
+ - backup_retention_days: 30
+ rule_id: daily-backup-rule
+ standard_schedule:
+ - backup_window:
+ - end_hour_of_day: 5
+ start_hour_of_day: 1
+ days_of_month: null
+ days_of_week: null
+ hourly_frequency: 6
+ months: null
+ recurrence_type: HOURLY
+ time_zone: America/Los_Angeles
+ week_day_of_month: []
+ - backup_retention_days: 30
+ rule_id: monthly-backup-rule
+ standard_schedule:
+ - backup_window:
+ - end_hour_of_day: 5
+ start_hour_of_day: 1
+ days_of_month: null
+ days_of_week: null
+ hourly_frequency: null
+ months: null
+ recurrence_type: MONTHLY
+ time_zone: America/Los_Angeles
+ week_day_of_month:
+ - day_of_week: MONDAY
+ week_of_month: FIRST
+ description: Backup Plan for GCE Instances.
+ location: us-central1
+ log_retention_days: null
+ project: your-gcp-project-id
+ resource_type: compute.googleapis.com/Instance
+ timeouts: null
+ module.dr_example.google_backup_dr_backup_vault.backup_vault[0]:
+ access_restriction: WITHIN_ORGANIZATION
+ allow_missing: false
+ annotations: null
+ backup_minimum_enforced_retention_duration: 100000s
+ backup_retention_inheritance: null
+ backup_vault_id: backup-vault
+ description: null
+ effective_labels:
+ goog-terraform-provisioned: 'true'
+ effective_time: null
+ force_delete: false
+ force_update: false
+ ignore_backup_plan_references: false
+ ignore_inactive_datasources: false
+ labels: null
+ location: us-central1
+ project: your-gcp-project-id
+ terraform_labels:
+ goog-terraform-provisioned: 'true'
+ timeouts: null
+
+counts:
+ google_backup_dr_backup_plan: 1
+ google_backup_dr_backup_vault: 1
+ modules: 1
+ resources: 2
+
+outputs: {}