【发布时间】:2019-07-09 18:14:01
【问题描述】:
我们在 azure 中使用 terraform 提供了一个解决方案 其中一个步骤是配置函数应用
单独的管道在函数应用中安装软件功能
当我重新运行 terraform apply (用于更新某些内容) 软件功能已从 azure 函数应用程序中删除
使用 terraform 1.22 版 这是预期的行为吗?
从原始问题扩展。 我相信今天从 terraform 1.21 到 1.22 的变化 向函数应用添加了额外的应用设置。 这似乎重新部署了整个功能应用程序,而不是仅仅添加应用程序设置,并且由于功能消失了而破坏了功能。
我不确定这是错误还是预期的行为,但至少这是我们没有预料到的。
因为我不想仅仅因为应用设置的更改而再次部署某些东西。是否有人遇到此问题,您是否有解决方法,或者他们的工作流程是我在 terraform 文档中遗漏的。
额外信息编辑2:
这样创建的 Azure 函数
resource "azurerm_function_app" "xxx"{
name = "xxx-status2signalr-func"
location = "${var.region}"
resource_group_name = "${azurerm_resource_group.xxx.name}"
app_service_plan_id = "${azurerm_app_service_plan.xxx.id}"
storage_connection_string = "${azurerm_storage_account.xxx.primary_connection_string}"
enable_builtin_logging = "false"
app_settings {
"blabladosmomethingEventhub" = "${var.blabla-something-eventhub}"
"blabladosomethingChangedEventhubConsumer" = "${var.blabla-dosomething-eventhub-consumer}"
"blablasomethingEventhubConnectionkeyListen" = "${var.xxxblabladosomethingchangedlisten}"
"AzureSignalRConnectionString" = "${azurerm_signalr_service.xxx.primary_connection_string}"
"WEBSITE_RUN_FROM_PACKAGE" = "1"
}
enabled="true"
version="~2"
}
函数创建得很好 我们部署的软件部分功能目前使用visual studio 右键部署
一切正常
现在我们对 appsettings 键进行了以下更改
resource "azurerm_function_app" "xxx"{
name = "xxx-status2signalr-func"
location = "${var.region}"
resource_group_name = "${azurerm_resource_group.xxx.name}"
app_service_plan_id = "${azurerm_app_service_plan.xxx.id}"
storage_connection_string = "${azurerm_storage_account.xxx.primary_connection_string}"
enable_builtin_logging = "false"
app_settings {
"APPINSIGHTS_INSTRUMENTATIONKEY" = "${azurerm_application_insights.xxx.instrumentation_key}"
"blabladosmomethingEventhub" = "${var.blabla-something-eventhub}"
"blabladosomethingChangedEventhubConsumer" = "${var.blabla-dosomething-eventhub-consumer}"
"blablasomethingEventhubConnectionkeyListen" = "${var.xxxblabladosomethingchangedlisten}"
"AzureSignalRConnectionString" = "${azurerm_signalr_service.xxx.primary_connection_string}"
"WEBSITE_RUN_FROM_PACKAGE" = "1"
}
enabled="true"
version="~2"
}
计划的输出显示更新 1 "APPINSIGHTS_INSTRUMENTATIONKEY" = "${azurerm_application_insights.xxx.instrumentation_key}"
检查时 appsetting 键被很好地添加 但部署的软件不见了。
非常欢迎任何关于此的指针。
【问题讨论】:
-
听起来像是在重新部署 Azure Function 实例。添加一个检查以查看它是否存在,如果您不希望它被重新部署,请不要理会它。
-
好吧,既然我们将状态存储在一个 azure blob 存储中,我希望 terraform 知道不重新部署它?
-
扩展问题
-
您能否编辑您的问题以分享您的 Terraform 代码以及显示它将删除该功能的计划输出?
-
添加了额外信息
标签: azure azure-functions terraform terraform-provider-azure