diff --git a/modules/compute-vm/README.md b/modules/compute-vm/README.md index d223466ca..9bf76ce3a 100644 --- a/modules/compute-vm/README.md +++ b/modules/compute-vm/README.md @@ -1054,12 +1054,23 @@ module "instance" { } attached_disks = [ { - name = "disk-1" - size = 10 - snapshot_schedule = ["boot"] + name = "disk-1" + size = 10 + options = { + replica_zone = "${var.region}-c" + } + snapshot_schedule = ["data"] } ] snapshot_schedules = { + boot = { + schedule = { + hourly = { + hours_in_cycle = 1 + start_time = "03:00" + } + } + } boot = { schedule = { daily = { diff --git a/modules/compute-vm/resource-policies.tf b/modules/compute-vm/resource-policies.tf index fbaa106ae..26a841525 100644 --- a/modules/compute-vm/resource-policies.tf +++ b/modules/compute-vm/resource-policies.tf @@ -175,8 +175,8 @@ resource "google_compute_region_disk_resource_policy_attachment" "attached" { for attachment in local.disk_regional_schedule_attachments : "${attachment.disk_key}-${attachment.snapshot_schedule}" => attachment } - project = local.project_id + region = local.region name = try( google_compute_resource_policy.snapshot[each.value.snapshot_schedule].name, each.value.snapshot_schedule diff --git a/tests/modules/compute_vm/examples/snapshot-schedule-create.yaml b/tests/modules/compute_vm/examples/snapshot-schedule-create.yaml index 038078628..668e142f7 100644 --- a/tests/modules/compute_vm/examples/snapshot-schedule-create.yaml +++ b/tests/modules/compute_vm/examples/snapshot-schedule-create.yaml @@ -13,48 +13,158 @@ # limitations under the License. values: - module.instance.google_compute_disk.disks["disk-1"]: - name: schedule-test-disk-1 - project: project-id - size: 10 - type: pd-balanced - zone: europe-west8-b - module.instance.google_compute_disk_resource_policy_attachment.attached["disk-1-boot"]: - disk: schedule-test-disk-1 - name: schedule-test-boot - project: project-id - timeouts: null - zone: europe-west8-b module.instance.google_compute_disk_resource_policy_attachment.boot["boot"]: disk: schedule-test name: schedule-test-boot project: project-id + timeouts: null zone: europe-west8-b module.instance.google_compute_instance.default[0]: + advanced_machine_features: [] + allow_stopping_for_update: true attached_disk: - device_name: disk-1 disk_encryption_key_raw: null + disk_encryption_key_rsa: null + disk_encryption_service_account: null + force_attach: null mode: READ_WRITE - source: schedule-test-disk-1 boot_disk: - - initialize_params: - - image: projects/cos-cloud/global/images/family/cos-stable + - auto_delete: true + disk_encryption_key_raw: null + disk_encryption_key_rsa: null + disk_encryption_service_account: null + force_attach: null + initialize_params: + - enable_confidential_compute: null + image: projects/cos-cloud/global/images/family/cos-stable + resource_manager_tags: null + size: 10 + source_image_encryption_key: [] + source_snapshot_encryption_key: [] + storage_pool: null + type: pd-balanced + interface: null + mode: READ_WRITE + can_ip_forward: false + deletion_protection: false + description: Managed by the compute-vm Terraform module. + desired_status: null + effective_labels: + goog-terraform-provisioned: 'true' + enable_display: false + hostname: null + instance_encryption_key: [] + key_revocation_action_type: NONE + labels: null + machine_type: f1-micro + metadata: null + metadata_startup_script: null + name: schedule-test + network_interface: + - access_config: [] + alias_ip_range: [] + ipv6_access_config: [] + network: https://www.googleapis.com/compute/v1/projects/xxx/global/networks/aaa + nic_type: null + queue_count: null + security_policy: null + subnetwork: subnet_self_link + network_performance_config: [] + params: [] + partner_metadata: null + project: project-id + resource_policies: null + scheduling: + - automatic_restart: true + availability_domain: null + graceful_shutdown: [] + host_error_timeout_seconds: null + instance_termination_action: null + local_ssd_recovery_timeout: [] + maintenance_interval: null + max_run_duration: [] + min_node_cpus: null + node_affinities: [] + on_host_maintenance: MIGRATE + on_instance_stop_action: [] + preemptible: false + provisioning_model: STANDARD + skip_guest_os_shutdown: false + termination_time: null + scratch_disk: [] + service_account: + - scopes: + - https://www.googleapis.com/auth/devstorage.read_only + - https://www.googleapis.com/auth/logging.write + - https://www.googleapis.com/auth/monitoring.write + shielded_instance_config: [] + tags: null + terraform_labels: + goog-terraform-provisioned: 'true' + timeouts: null + zone: europe-west8-b + module.instance.google_compute_region_disk.disks["disk-1"]: + async_primary_disk: [] + create_snapshot_before_destroy: false + create_snapshot_before_destroy_prefix: null + description: null + disk_encryption_key: [] + effective_labels: + disk_name: disk-1 + disk_type: pd-balanced + goog-terraform-provisioned: 'true' + interface: null + labels: + disk_name: disk-1 + disk_type: pd-balanced + name: schedule-test-disk-1 + project: project-id + region: europe-west8 + replica_zones: + - europe-west8-b + - europe-west8-c + size: 10 + snapshot: null + source_disk: null + source_snapshot_encryption_key: [] + terraform_labels: + disk_name: disk-1 + disk_type: pd-balanced + goog-terraform-provisioned: 'true' + timeouts: null + type: pd-balanced + module.instance.google_compute_region_disk_resource_policy_attachment.attached["disk-1-data"]: + disk: schedule-test-disk-1 + name: data + project: project-id + region: europe-west8 + timeouts: null module.instance.google_compute_resource_policy.snapshot["boot"]: description: Schedule policy boot for schedule-test. + disk_consistency_group_policy: [] + group_placement_policy: [] + instance_schedule_policy: [] name: schedule-test-boot project: project-id region: europe-west8 snapshot_schedule_policy: - - schedule: + - retention_policy: [] + schedule: - daily_schedule: - days_in_cycle: 1 start_time: 03:00 hourly_schedule: [] weekly_schedule: [] snapshot_properties: [] + timeouts: null + workload_policy: [] counts: - google_compute_disk: 1 - google_compute_disk_resource_policy_attachment: 2 + google_compute_disk_resource_policy_attachment: 1 google_compute_instance: 1 + google_compute_region_disk: 1 + google_compute_region_disk_resource_policy_attachment: 1 google_compute_resource_policy: 1 + modules: 1 + resources: 5