有条件地使用 terraform 配置 gcp vm 实例
Posted
技术标签:
【中文标题】有条件地使用 terraform 配置 gcp vm 实例【英文标题】:Conditionally provision a gcp vm instance with terraform 【发布时间】:2022-01-18 04:57:39 【问题描述】:我想以变量为条件提供资源(gcp vm 实例),例如:
resource "$var.param > 0 ? "google_compute_instance" : "null_resource"" "cluster"
# ...
但上述语法无效:
Error: Invalid resource type name
A name must start with a letter or underscore and may contain only letters, digits, underscores, and dashes.
Error: Invalid string literal
Template sequences are not allowed in this string. To include a literal "$", double it (as "$$") to escape it.
有没有办法做到这一点?理想情况下单独使用 terraform。
【问题讨论】:
【参考方案1】:您可以为此使用count:
resource "google_compute_instance"
count = var.param > 0 ? 1 : 0
resource "cluster"
count = var.param > 0 ? 0 : 1
【讨论】:
有没有办法避免副作用:Because google_compute_instance.[...] has "count" set, its attributes must be accessed on specific instances. For example, to correlate with indices of a referring resource, use: google_compute_instance.[...][count.index]
?
@Sparkler 遗憾的是没有,除非您在应用 TF 文件之前对其进行预处理。一些人使用 jinja2 模板化他们的 TF 代码,以使其以后“更干净”。以上是关于有条件地使用 terraform 配置 gcp vm 实例的主要内容,如果未能解决你的问题,请参考以下文章
如何配置 Terraform 以根据 GCP 的日志错误触发警报?
GCP 上的 Terraform:如何将我的集群节点列入 RDS 白名单