我如何在 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
...
}
}
我的 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
...
}
}