【问题标题】:Terraform no matching SecurityGroup foundTerraform 找不到匹配的安全组
【发布时间】:2018-12-31 05:24:13
【问题描述】:

我正在尝试为 Dev 和 QA 环境配置我的 terraform,每个环境都有自己的安全组,我使用 data 标签指定:

data "aws_security_group" "ssh" {
  name = "SG-SSH"
}

data "aws_security_group" "postgres" {
  name = "SG-Postgres"
}

有没有办法根据目标环境指定哪些安全组被拉入?我试过这个:

locals {
  sgs = {
    dev  = ["${data.aws_security_group.postgres.id}", "${data.aws_security_group.ssh.id}"]
    qa   = ["${data.aws_security_group.postgres.id}"]
  }
}

然后我引用"${local.sgs[var.env]}"。但是,ssh 安全组只存在于 Dev 环境中,所以当我针对 QA 环境时,我仍然得到:

data.aws_security_group.ssh: data.aws_security_group.ssh: no matching SecurityGroup found

【问题讨论】:

  • 不允许在 QA 环境中创建 ssh SG :(

标签: amazon-web-services terraform aws-security-group terraform-provider-aws


【解决方案1】:

根据 Terraform Documentation,您可以指定条件操作如下:

条件?真值:假值

然后,例如,您可以按如下方式定义您的安全组:

locals {
  sgs = "${var.env == "dev" ? ["${data.aws_security_group.postgres.id}", "${data.aws_security_group.ssh.id}"] : ["${data.aws_security_group.postgres.id}"]}"
}

并使用"${local.sgs}" 调用它 - 这将获取基于var.env 中指定的环境的所有安全组。

【讨论】:

    猜你喜欢
    • 2021-09-04
    • 2021-01-06
    • 2022-06-30
    • 2021-06-16
    • 2021-08-08
    • 2015-08-12
    • 2021-04-06
    • 1970-01-01
    相关资源
    最近更新 更多