我正在尝试使用Terraform为sentinel解决方案部署一些sentinel自动化规则。因为自动化规则需要UUID作为其名称,所以我对每个自动化规则使用random_uuid
资源来为自动化规则的名称生成UUID。代码如下所示。我想知道是否有一种方法可以通过一个random_uuid资源或类似的资源为我的自动化规则生成所有随机UUID值。
resource "random_uuid" "automation_rule_1" {}
resource "azurerm_sentinel_automation_rule" "automation_rule_1" {
name = random_uuid.automation_rule_1.result
log_analytics_workspace_id = var.log_analytics_workspace_id
display_name = "Automation Rule 1"
order = 1
triggers_on = "Incidents"
triggers_when = "Created"
enabled = true
action_playbook {
logic_app_id = var.logic_app_id
order = 1
tenant_id = var.tenant_id
}
}
resource "random_uuid" "automation_rule_2" {}
resource "azurerm_sentinel_automation_rule" "automation_rule_2" {
name = random_uuid.automation_rule_2.result
log_analytics_workspace_id = var.log_analytics_workspace_id
display_name = "Automation Rule 2"
order = 1
triggers_on = "Incidents"
triggers_when = "Created"
enabled = true
condition_json = jsonencode(
[
{
conditionProperties = {
operator = "Contains"
propertyName = "IncidentRelatedAnalyticRuleIds"
propertyValues = [ var.sentinel_alert_rule_scheduled_id ]
}
conditionType = "Property"
}
]
)
action_incident {
order = 1
status = "Closed"
classification = "BenignPositive_SuspiciousButExpected"
classification_comment = "Sample Comment Goes Here"
owner_id = var.automation_rule_owner_id
}
}
我期待类似以下的东西。有人能解释一下有没有一种方法可以实现这种行为。
resource "random_uuid" "automation_rule_ids" {
keepers = {
"rule_1_id" = "dont know what to put here",
"rule_2_id" = "dont know what to put here"
}
}
1条答案
按热度按时间ljsrvy3e1#
random_uuid
的每个示例将仅生成一个UUID,但您可以使用该资源类型的多个示例来生成多个UUID。例如:
这将
local.rule_uuids
定义为从规则名称到UUID字符串的Map,使用for_each
和random_uuid.example
资源声明该资源的多个动态示例。例如,如果将
rules
变量设置为["a", "b"]
,则local.rule_uuids
将具有如下结构的值:...当然,实际的UUID值会有所不同,因为它们是随机的。
上面没有包括任何“keepers”,因为您的问题没有定义任何规则,说明何时需要重新生成UUID。使用
for_each
意味着向var.rules
添加新元素将导致Terraform建议仅为该规则键生成新的UUID,同样,从var.rules
中删除元素将使Terraform建议丢弃其中一个UUID。如果你确实需要为每个对象设置某种“keeper”,那么另一种方法是将输入变量设置为map,并使用值作为每个对象的“keepers”:
resource
块中的each.value
引用map的当前元素的值,因此该模块的调用者可以通过更改分配给map中其元素的值而不更改map键来重新生成现有的UUID。