Terraform 在“计数”中设置多个变量
Posted
技术标签:
【中文标题】Terraform 在“计数”中设置多个变量【英文标题】:Terraform Set More than one variable in "Count" 【发布时间】:2022-01-11 20:12:01 【问题描述】:我正在使用以下代码:
data "aws_secretsmanager_secret_version" "test1"
count = var.test123.load_from_secrets_manager?1:0
secret_id = "test1"
现在,当我运行 terraform init 没有任何错误时,它可以正常工作。
现在,我的问题是我需要在同一个数据部分下添加一个新变量,比如
data "aws_secretsmanager_secret_version" "test1"
count = var.test123.load_from_secrets_manager?1:0
count = var.test456.load_from_secrets_manager?1:0
secret_id = "test1"
当我对此运行 terraform init 时,我得到了错误:
The argument "count" was already set. Each argument may be set only once.
我需要想办法在 SAME COUNT 中添加两个或更多变量。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:您在这里真正想要完成的是指定两个条件,它们结合起来确定data
块是否应该尝试执行READ
。您可以通过组合逻辑来做到这一点:
data "aws_secretsmanager_secret_version" "test1"
count = (var.test123.load_from_secrets_manager && var.test456.load_from_secrets_manager) ? 1 : 0
secret_id = "test1"
您可能还想更新它以改用for_each
元参数:
data "aws_secretsmanager_secret_version" "test1"
for_each = (var.test123.load_from_secrets_manager && var.test456.load_from_secrets_manager) ? toset(["test1"]) : []
secret_id = "test1"
【讨论】:
以上是关于Terraform 在“计数”中设置多个变量的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Terraform 在 GKE 中设置非默认服务帐户?
在 Terraform 的 aws_ecs_task_definition 资源中设置 ulimit 堆栈大小
在 Spring Security UsernamePasswordAuthenticationFilter JWT 身份验证中设置自定义登录 url