cov*_*efe 5 amazon-web-services terraform aws-security-group terraform-provider-aws
我正在尝试为开发和 QA 环境配置我的 terraform,每个环境都有自己的安全组,我用data:
data "aws_security_group" "ssh" {
name = "SG-SSH"
}
data "aws_security_group" "postgres" {
name = "SG-Postgres"
}
Run Code Online (Sandbox Code Playgroud)
有没有办法根据目标环境指定拉入哪些安全组?我试过这个:
locals {
sgs = {
dev = ["${data.aws_security_group.postgres.id}", "${data.aws_security_group.ssh.id}"]
qa = ["${data.aws_security_group.postgres.id}"]
}
}
Run Code Online (Sandbox Code Playgroud)
然后我用 来引用"${local.sgs[var.env]}"。但是,ssh安全组仅存在于开发环境中,因此当我针对 QA 环境时,我仍然得到:
data.aws_security_group.ssh: data.aws_security_group.ssh: no matching SecurityGroup found
Run Code Online (Sandbox Code Playgroud)
根据 Terraform文档,您可以指定条件操作,如下所示:
健康)状况 ?真值 : 假值
例如,您可以按如下方式定义安全组:
locals {
sgs = "${var.env == "dev" ? ["${data.aws_security_group.postgres.id}", "${data.aws_security_group.ssh.id}"] : ["${data.aws_security_group.postgres.id}"]}"
}
Run Code Online (Sandbox Code Playgroud)
并用"${local.sgs}"- 调用它,这将根据 中指定的环境获取所有安全组var.env。
| 归档时间: |
|
| 查看次数: |
5004 次 |
| 最近记录: |