如何在 terraform 中创建允许/拒绝防火墙规则条件?
Posted
技术标签:
【中文标题】如何在 terraform 中创建允许/拒绝防火墙规则条件?【英文标题】:How do i create make the allow/deny firewall rule conditional in terraform? 【发布时间】:2021-12-19 00:25:25 【问题描述】:我的 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"]
...
【问题讨论】:
【参考方案1】:我认为这是他们所谓的dynamic blocks的工作
简而言之:我认为它有 两个 动态块,一个用于允许,一个用于拒绝。他们每个人都会使用一些条件(可能是互斥的)。您的代码的存根可能是:
resource "google_compute_firewall" "fw"
dynamic "allow"
for_each = var.allow_entries
...
dynamic "block"
for_each = var.block_entries
...
【讨论】:
以上是关于如何在 terraform 中创建允许/拒绝防火墙规则条件?的主要内容,如果未能解决你的问题,请参考以下文章
在 Terraform 中,如何在包含的模块中引用根模块中创建的组件