我有一个用于部署逻辑应用程序的 terraform 模板。 因为我有很多逻辑应用程序,所以我想以某种方式将其中一部分设置为使用基于重复的触发器,并将其中一部分设置为 HTTP 请求。
目前,我的所有逻辑应用程序都使用相同的模板,如下所示:
{
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"contentVersion": "1.0.0.0",
"parameters": {
...
},
"triggers": {
"recurrenceTrigger": {
"type": "Recurrence",
"recurrence": {
"frequency": "Day",
"interval": 1,
"schedule": {
"hours": [
"${scheduleHour}"
],
"minutes": [
"${scheduleMinute}"
]
},
"timeZone": "${scheduleTimezone}"
}
}
},
"actions": {
// Define your actions here
},
"outputs": {}
}
我正在考虑如何修改此模板以包含变量的条件输出并将其设置到我的逻辑应用程序中,并基于此选择要使用的触发器类型?
我正在尝试类似:
{
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"contentVersion": "1.0.0.0",
"parameters": {
...
},
"triggers": {
"${use_http_trigger ? "HttpTrigger" : "Recurrence"}": ${
use_http_trigger ?
{
"type": "Http",
"inputs": {
"method": "POST",
"uri": "http://www.example.com"
}
}
:
{
"recurrence": {
"frequency": "Day",
"interval": 1,
"schedule": {
"hours": [
"${scheduleHour}"
],
"minutes": [
"${scheduleMinute}"
]
},
"timeZone": "${scheduleTimezone}"
},
"evaluatedRecurrence": {
"frequency": "Day",
"interval": 1,
"schedule": {
"hours": [
"${scheduleHour}"
],
"minutes": [
"${scheduleMinute}"
]
},
"timeZone": "${scheduleTimezone}"
},
"type": "Recurrence"
}
}
},
...(rest of template)
}
错误:条件结果类型不一致; true 和 false 结果表达式必须有 一致的类型。 “true”值包括对象属性“inputs”,而“false”值中不存在该属性..
您认为我的请求的解决方案是什么?代替上面的,使用 2 个单独的模板?不希望的,代码重复...等等。
*我的变量 use_http_trigger 是一个布尔值;
这是使用两个模板文件的示例:
variable "use_http_trigger" {
type = bool
default = true
}
locals {
tests = {
aaa = { one = "111", two = "222" }
bbb = { one = "777", two = "999" }
}
}
resource "null_resource" "test" {
for_each = local.tests
triggers = {
txt = templatefile(
var.use_http_trigger ? "./foo.tftpl" : "./bar.tftpl",
{
name = each.key,
config = each.value
}
)
}
}
只是一个简单的条件:
var.use_http_trigger ? "./foo.tftpl" : "./bar.tftpl",