Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 如果var为null或空,如何跳过/忽略terraform中的特定模块_Azure_Terraform_Devops_Terraform Provider Azure - Fatal编程技术网

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

Azure 如果var为null或空,如何跳过/忽略terraform中的特定模块,azure,terraform,devops,terraform-provider-azure,Azure,Terraform,Devops,Terraform Provider Azure,如果定义的变量为空或null,是否有方法跳过地形块/文件。而不是抛出错误 我已经为azure创建了两个terraform脚本 对于azure自动化创建,请选择runbook创建 用于创建事件网格 在执行第一步之后,我必须手动生成webhook URL(webhook生成没有这样的自动化支持)。生成webhook URL后,我需要在第二个资源中定义它。如果我定义了空/空或无效URL,则terraform会抛出错误 下面是地形代码 data "local_file" "

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

我已经为azure创建了两个terraform脚本

  • 对于azure自动化创建,请选择runbook创建
  • 用于创建事件网格
  • 在执行第一步之后,我必须手动生成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。然后得到下面的错误

    错误:“webhook\u endpoint.0.url”:未设置必填字段


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

    我假设您希望使整个
    azurerm\u eventgrid\u event\u订阅
    资源可选,基于
    var.webhook\u 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"
    
    }
    

    在上面的示例中,您可能需要根据值<代码> Val.WebHookURL实际上必须考虑正确或不正确来调整条件。

    如果变量为空,则必须跳过整个资源块。代码>资源“azurerm\u eventgrid\u event\u订阅”“密钥库”{