如果 var 为 null 或为空,如何 skip/ignore terraform 中的特定模块
How to skip/ignore specific module in terraform if var is null or empty
如果定义的变量为空或 null,是否有任何方法可以跳过 terraform block/file。而不是抛出错误。
我已经为 azure 创建了两个 terraform 脚本。
- 对于 azure 自动化创作,运行书籍创作。
- 用于创建事件网格。
执行第一步后,我必须手动生成一个 webhook URL(不支持自动生成 webhook)。生成 webhook URL 后,我需要在第二个资源中定义它。如果我定义了 empty/null 或无效的 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 代码都在一个作业中 运行。如果代码失败,那么整个工作都会失败。这就是为什么要寻找一种解决方案来跳过特定的 block/file 如果 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
实际必须被视为正确或不正确的值来调整条件。
如果定义的变量为空或 null,是否有任何方法可以跳过 terraform block/file。而不是抛出错误。
我已经为 azure 创建了两个 terraform 脚本。
- 对于 azure 自动化创作,运行书籍创作。
- 用于创建事件网格。
执行第一步后,我必须手动生成一个 webhook URL(不支持自动生成 webhook)。生成 webhook URL 后,我需要在第二个资源中定义它。如果我定义了 empty/null 或无效的 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 代码都在一个作业中 运行。如果代码失败,那么整个工作都会失败。这就是为什么要寻找一种解决方案来跳过特定的 block/file 如果 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
实际必须被视为正确或不正确的值来调整条件。