我如何在 terraform 中创建使 allow/deny 防火墙规则成为条件?

How do i create make the allow/deny firewall rule conditional in terraform?

我的 GCP 项目中有一个防火墙规则,值是在 运行 时从变量中读取的,它成功运行但是我现在有一个用例,我想添加一个拒绝块而不是允许.你不能同时拥有两者,有没有办法根据条件将允许块替换为拒绝块。

也许如果变量名是X,那么使用拒绝块,否则使用允许块。请参阅下面的示例代码。

resource "google_compute_firewall" "fw" {
 ....
  allow {
    protocol    = var.somevariable[element(keys(var.somevariable), count.index)]["protocol"]
    ports       = var.somevariable[element(keys(var.somevariable), count.index)]["ports"]
  }
  ...
}

我认为这是他们所谓的工作dynamic blocks

简而言之:我认为它有 两个 个动态块,一个用于允许,一个用于拒绝。他们每个人都会使用一些条件(可能是相互排斥的)。您的代码存根可以是:

resource "google_compute_firewall" "fw" {
  dynamic "allow" {
    for_each = var.allow_entries
    ...
  }
  dynamic "block" {
    for_each = var.block_entries
    ...
  }
}