微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果var为null或为空,如何跳过/忽略terraform中的特定模块

如何解决如果var为null或为空,如何跳过/忽略terraform中的特定模块

如果定义的变量为空或null,是否有任何方法可以跳过terraform块/文件。而不是抛出错误

我为天青创建了拖曳地形脚本。

  1. 要创建天蓝色的自动化,请创建运行手册。
  2. 用于创建事件网格。

执行第一步后,我必须手动生成一个Webhook URL(不存在用于Webhook生成自动支持)。生成webhook URL之后,我需要在第二个资源中对其进行定义。如果我定义了空/空或无效的URL,则terraform会抛出错误

下面是地形代码

data "local_file" "runbook_script" {
  filename = "${path.module}/envent-grid-runbook.ps1"
}
resource "azurerm_automation_runbook" "runbook" {
  name                    = "event-gird-notification"
  location                = var.location
  resource_group_name     = var.resource_group_name
  automation_account_name = azurerm_automation_account.CreateAutomation.name
  log_verbose             = true
  log_progress            = true
  description             = "This runbook is creted for event grid notification"
  runbook_type            = "PowerShell"

  content = data.local_file.runbook_script.content
  publish_content_link {
    uri = ""
  }
}

resource "azurerm_eventgrid_event_subscription" "key-vault" {
  name  = "test"
  scope = "/subscriptions/xxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxx/name"
  topic_name = "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxx/vault"
  webhook_endpoint  {
        url = var.webhook_url
  }

  included_event_types = [
                                "Microsoft.keyvault.SecretNewVersionCreated","Microsoft.keyvault.SecretNearExpiry","Microsoft.keyvault.SecretExpired"
                        ]
  event_delivery_schema = "EventGridSchema"

}

如果我为webhook ULR变量定义了null / empty var。然后低于错误

Error: "webhook_endpoint.0.url": required field is not set

我创建了一个Jenkins作业,其中所有terraform代码都可以在一个作业中运行。如果代码失败,则整个作业都会失败。这就是为什么寻找一种解决方案,以在var为空或null时跳过特定的块/文件

解决方法

我假设您要使整个azurerm_eventgrid_event_subscription资源为可选,基于var.webhook_url,您可以使用count

例如:

resource "azurerm_eventgrid_event_subscription" "key-vault" {

  count = var.webhook_url == "" ? 0 : 1

  name  = "test"
  scope = "/subscriptions/xxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxx/name"
  topic_name = "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxx/vault"

  webhook_endpoint" {
        url = var.webhook_url
  } 

  included_event_types = [
                                "Microsoft.KeyVault.SecretNewVersionCreated","Microsoft.KeyVault.SecretNearExpiry","Microsoft.KeyVault.SecretExpired"
                        ]
  event_delivery_schema = "EventGridSchema"

}

在上面的示例中,您可能需要根据实际上必须认为正确或不正确的值var.webhook_url来调整条件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。