Terraform GCP实例计划:将虚拟机关联至已创建的计划
关联虚拟机关联到Terraform创建的启停策略的方法
你当前的代码仅创建了Google Cloud的实例启停调度策略,但没有将任何虚拟机与这个策略绑定,所以需要补充以下操作:
情况1:虚拟机是通过Terraform管理的
如果你的目标虚拟机也是用Terraform定义的,直接在虚拟机的google_compute_instance资源中添加resource_policies字段,引用已创建的调度策略即可:
# 示例虚拟机资源(根据你的实际配置调整) resource "google_compute_instance" "test_vm" { name = "test-vm" machine_type = "n1-standard-1" zone = "us-east1-a" # 必须属于策略所在的region(示例中是US/Eastern对应的us-east1区域) # 以下是虚拟机的基础配置(磁盘、网络等,根据你的实际情况填写) boot_disk { initialize_params { image = "debian-cloud/debian-11" } } network_interface { network = "default" } # 关键:添加这行关联调度策略 resource_policies = [google_compute_resource_policy.weekly.self_link] }
情况2:虚拟机已存在(未通过Terraform创建)
如果虚拟机是手动创建的,或者由其他工具管理,需要使用google_compute_instance_resource_policy_attachment资源来完成绑定:
resource "google_compute_instance_resource_policy_attachment" "vm_schedule_attach" { project = local.test_project_id name = "vm-schedule-attachment" zone = "us-east1-a" # 目标虚拟机所在的可用区 instance = "你的虚拟机名称" resource_policy = google_compute_resource_policy.weekly.name }
最后执行步骤
修改完成后,在终端执行:
terraform plan:检查变更是否符合预期terraform apply:确认后执行,完成策略与虚拟机的关联
注意事项
- 虚拟机所在的可用区必须属于调度策略的区域(比如策略在
us-east1区域,虚拟机要在us-east1-a/us-east1-b等同区域可用区) - 如果要关联多个虚拟机,重复对应操作即可(每个VM添加
resource_policies,或创建多个attachment资源)
内容的提问来源于stack exchange,提问作者JBL
相关产品推荐
相关产品推荐

