我可以跳过地形中的cpu_option块吗



在AWS中,我们目前在三个环境中运行应用程序:dev、staging和prod.

对于我们的暂存和生产环境,我们在x2gd.2xlarge实例上运行我们的应用程序。但是,对于我们的开发环境,我们只在x2gd.medium实例上运行。

在我们的地形中,我们有一个启动模板块,在其中我们配置cpu_options。

cpu_options {
core_count = var.core_count
threads_per_core = var.threads_per_core
}

设置cpu_options在我们的staging和prod x2gd.2xlarge实例上非常有效。然而,在我们的开发环境中使用x2gd.medium时,我们会收到以下错误消息:";x2gd.medium实例类型不支持指定CpuOptions&";。这个错误是正确的,x2gd.medium实例只有1个CPU,不能用CPU_options配置。

x2gd系列中的所有较大实例都可以使用cpu_options进行配置。但是,我真的不想把开发环境中的实例大小增加到x2gd.large,因为我们不需要它。所以,我想知道当我们为开发环境运行terraform时,是否有任何方法可以跳过cpu_options块?

在注释(h/t:@luk2302(上展开,您需要使用带有for_each元参数[2]的dynamic块[1]。代码块将变为:

dynamic "cpu_options" {
for_each   = var.environment == "dev" ? [] : [1]
content {
core_count       = var.core_count
threads_per_core = var.threads_per_core
}
}

[1]https://developer.hashicorp.com/terraform/language/expressions/dynamic-blocks

[2]https://developer.hashicorp.com/terraform/language/meta-arguments/for_each

最新更新