如果省略参数,Terraform是否打算忽略更改?

如果省略参数,Terraform是否打算忽略更改?,terraform,terraform-provider-azure,Terraform,Terraform Provider Azure,比方说,我使用azurerm_app_服务创建了一个应用程序服务,该服务具有最小的参数。如果我稍后进入Azure门户并开始创建IP限制,然后运行Terraform apply,则Terraform似乎不会检测到漂移并尝试撤消所有IP限制。这是否符合预期?是否有Terraform文档表明这是有意的 这种行为对我们有利,因为它告诉我们Terraform可以进行配置漂移,只要配置脚本中没有定义参数或参数对象。我们打算让Azure门户用户在门户中修改哪些是可以的,哪些是不可以的,而不用担心Terrafo

比方说,我使用azurerm_app_服务创建了一个应用程序服务,该服务具有最小的参数。如果我稍后进入Azure门户并开始创建IP限制,然后运行Terraform apply,则Terraform似乎不会检测到漂移并尝试撤消所有IP限制。这是否符合预期?是否有Terraform文档表明这是有意的

这种行为对我们有利,因为它告诉我们Terraform可以进行配置漂移,只要配置脚本中没有定义参数或参数对象。我们打算让Azure门户用户在门户中修改哪些是可以的,哪些是不可以的,而不用担心Terraform会将其全部重置


更新:接受了下面的答案,也从Hashicorp论坛收到了更多反馈,

这将取决于资源的实现方式、模式和变化。通常,对于azurerm提供程序,即使这些更改是可选的,也应该进行更改。我会再次检查您的地形配置和您正在修改的门户资源是否相同。您可能需要运行刷新。换句话说,当您运行terraform时,门户中的更改显示为漂移是非常常见的。

这称为期望状态与当前状态。 如果您使用terraform创建任何资源并手动修改,terraform将在下次应用后恢复该资源。 在terraformapply命令之前,它将当前状态提取到statefile中,然后将当前状态与所需状态进行比较。
如果有任何手动更改,它将进行必要的更改以使其达到所需状态。

如果您错过了它,我注意到如果我在Terraform中创建一个没有ip_限制块的azurerm_应用程序_服务,然后在Azure Portal中手动添加ip限制,并稍后运行Terraform apply…这些更改不会恢复。这似乎在其他资源中也很常见。只要我们在Terraform配置中省略ip_限制{}块,这些更改就不会恢复。你能给我指一下关于这种行为的白皮书文档吗?我正在根据这种行为做出重大决策,如果你知道我的意思的话,我想确保我们没有意外地使用“bug功能”。azurerm_应用程序服务
存在一些文档限制,用户必须显式地将scm_ip_限制设置为空片([])以删除它。
,为什么不为app_settings{}块指定此选项?如果我从Terraform配置中省略app_设置,然后进入Azure门户并添加各种键:值对并运行Terraform apply,则不会检测到任何更改,应用程序设置也不会恢复。我查看架构,发现计算属性为
true
。运行
terraform apply
时是否会自动进行刷新?已确认在应用和计划期间会自动运行刷新。“所有plan和apply命令都首先运行refresh,然后再执行任何其他工作。”我知道您从何处获得有关模式如何指示这一点的信息,但在azurerm_app_服务模式的情况下,它似乎没有达到预期的效果。根据我链接的模式,你能从中得到什么?我从Hashicorp论坛得到一些反馈,这与你的回答一致,即这些漂移变化只能根据提供者实现资源的方式来检测,正如你所说的。我会接受它作为一个答案,尽管如果你有更多的时间来研究为什么ip_限制的模式没有告诉terraform有漂移,那就太好了。我想学习如何识别不会检测漂移的资源模式,就像在我的例子中一样。