Terraform,忽略特定的应用程序设置azurerm

问题描述

我正在使用terraform,现在由于基础架构可能会发生变化,因此我的应用程序所有设置都被填充。这样,这是全自动的。

但是,我的linux消费计划Functions应用程序遇到了问题,该应用程序的appsetting需要在部署期间进行设置。 WEBSITE_RUN_FROM_PACKAGE是在部署过程中设置为URL的值。

我的问题是terraform删除该值或将其设置为我设置的值。

如何在terraform部署期间保持此值不变?

是从天蓝色获取值还是忽略terraform中的值?

我发现了这一点,但似乎不适用于appsettings部分。

https://www.terraform.io/docs/configuration/resources.html#ignore_changes

我的测试:

resource "azurerm_function_app" "shipping-broker-msw-func" {
  name                       = "shipping-broker-msw-func"
  ...

  app_settings = {
    ...
    "WEBSITE_RUN_FROM_PACKAGE"        = "URL_Form_CD"
  }

   lifecycle {
    ignore_changes = [
      app_settings["WEBSITE_RUN_FROM_PACKAGE"],]
  }
}

解决方法

从Terraform文档:https://www.terraform.io/docs/configuration/resources.html#ignore_changes

enter image description here

所以看来原因是,当您首次创建应用程序服务时,需要包括键(可能带有伪值),以便以后可以指定要忽略它。

如果一开始没有包含密钥,则以后仍可以添加。因此,只需在您的配置中添加带有虚拟值的键,然后ignore_changes就可以正常工作。就我而言,它奏效了。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...