【问题标题】:GCP Terraform resource policy in compute module issues计算模块问题中的 GCP Terraform 资源策略
【发布时间】:2022-08-16 00:38:46
【问题描述】:

我正在尝试将start-stop schedule 添加到我们云存储库中的 vm 实例(这是一个 terraform/terragrunt 设置)

官方网站上的示例是这样的:

所以因为我们使用土拨鼠作为包装器,我的模块如下所示:

并作为参考我的变量块这是:

当我推送代码时,它在 CloudBuild 的第 0 步出错,并出现以下错误:

错误:在资源 \"google_compute_resource_policy\" \"hourly\" 中的 main.tf 第 116 行引用未声明的输入变量:116:time_zone = var.time_zone 尚未声明名为“time_zone”的输入变量。此变量可以用变量“time_zone”{}块声明。

我曾尝试将此变量放在块的不同位置,但我一直收到相同的错误。有没有人有任何想法?

  • 因为变量instance_schedule_policy是一个具有不同属性的对象,为了引用time_zone你需要这样做:var.instance_schedule_policy.time_zone
  • 我做了修改:resource \"google_compute_resource_policy\" \"hourly\" { #description = \"Start and stop instances\" instance_schedule_policy { name = var.name region = var.region #time_zone = var.time_zone vm_start_schedule { schedule = var.vm_start_schedule } vm_stop_schedule { schedule = var.vm_stop_schedule } time_zone = var.instance_schedule_policy.time_zone } }
  • on main.tf line 112, in resource \"google_compute_resource_policy\" \"hourly\": 112: schedule = var.vm_start_schedule An input variable with the name \"vm_start_schedule\" has not been declared. This variable can be declared with a variable \"vm_start_schedule\" {} block. stop_schedule 相同。如果我尝试将 schedule = var.vm_stop_schedule 重命名为 vm_stop_schedule = var.vm_stop_schedule 它错误地建议它期望schedule =

标签: google-cloud-platform terraform google-cloud-build terraform-provider-gcp terragrunt


【解决方案1】:

现在已解决。我要感谢@kornshell93 为我指明了正确的方向。

我最终按照建议使用了该块,但创建了一个新模块并从我的 vm 实例块中的一个单独部分中点击它。我以这种方式将项目链接为依赖项。以前通过主计算实例模块的方法在所有其他 vm 实例上一直失败,几乎就像它期望在所有这些实例上都出现这个块一样。

resource "google_compute_resource_policy" "hourly" {
name        = var.instance_schedule_policy.name
region      = var.region
project     = var.project
description = "Start and stop instances"

instance_schedule_policy {
  vm_start_schedule {
    schedule = var.instance_schedule_policy.vm_start_schedule
  }
  vm_stop_schedule {
    schedule = var.instance_schedule_policy.vm_stop_schedule
  }
  time_zone = var.instance_schedule_policy.time_zone
}
}

和 vm 实例块

inputs = {
#instance start/stop schedules
project               = dependency.project.outputs.project_id
region                = "europe-west2"
instance_schedule_policy = {
name                      = "start-stop"
vm_start_schedule         = "30 07 * * *"
vm_stop_schedule          = "00 18 * * *"
time_zone                 = "GMT"
}
}

【讨论】:

    【解决方案2】:

    我正在尝试做同样的事情。我已经从 terraform 创建了资源策略和实例,但看不到将创建的实例添加到资源策略的 terraform 选项。有人可以帮忙吗?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 2021-08-28
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多