如何解决带条件的地形设置变量
我正在尝试将一个变量设置为一个字符串,稍后再将其与aws s3存储桶策略的另一个字符串连接。我正在尝试通过定义局部变量来做到这一点,但是我还需要指定一个要在其中使用的条件。我正在使用terraform 11。
例如:
- 如果set_bucket_policy为false,则将变量设置为空字符串“”
- 否则请使用Heredoc设置变量的字符串值
示例,而不是有效代码:
locals {
my_bucket_policy = var.set_bucket_policy == "false" ? "" : <<EOF
{
"Action": "s3:Get*","Effect": "Allow","Principal": {
"AWS": "arn:aws:iam::${data.aws_caller_identity.current.account_id}:role/myrole"
},"Resource": [
"arn:aws:s3:::mybucket","arn:aws:s3:::mybucket/*"
],"Sid": ""
}
EOF
}
解决方法
我认为这已经很接近了,我创建了一个小样本来展示如何使用条件句。有关更多详细信息,您可以查看Terraform的Conditional Expressions。
main.tf
variable "set_bucket_policy" {
type = bool
}
output "my_bucket_policy" {
value = var.set_bucket_policy == false ? "is set to false" : "is set to true"
}
示例输出
% terraform apply -var 'set_bucket_policy=false' -auto-approve
Apply complete! Resources: 0 added,0 changed,0 destroyed.
Outputs:
my_bucket_policy = is set to false
% terraform apply -var 'set_bucket_policy=true' -auto-approve
Apply complete! Resources: 0 added,0 destroyed.
Outputs:
my_bucket_policy = is set to true
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。