如何在 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 中创建存档文件?

如何在 Terraform 中创建 SSH 密钥?

如何在 terraform 中创建地图

在 Terraform 中,如何在包含的模块中引用根模块中创建的组件

如何使用 API 或 Terraform 模板在 GCP 中创建 StackDriver 工作区

如果找不到要从中恢复的快照,如何在 terraform 中创建 ebs 卷