如果省略参数,Terraform 是否打算忽略更改?
Does Terraform intend to ignore changes if arguments are omitted?
假设我使用 azurerm_app_service 使用最少的参数创建了一个应用程序服务。如果我稍后进入 Azure 门户并开始创建 IP 限制,然后 运行 Terraform 应用,Terraform 似乎不会检测到漂移并尝试撤消所有 IP 限制。这是按预期工作吗?是否有 Terraform 文档表明这是有意的?
这种行为对我们有利,因为它告诉我们只要参数或参数对象未在配置脚本中定义,Terraform 就可以进行配置漂移。我们打算让 Azure 门户用户在门户中修改可以和不可以的内容,而不必担心 Terraform 将其全部重置。
更新:已接受以下答案,并从 Hashicorp 的论坛收到更多反馈,https://discuss.hashicorp.com/t/terraform-not-detecting-drift-on-resources-intended-or-not/17547/4?u=terraform-man
这将取决于资源的实现方式、架构和正在发生的变化。通常对于 azurerm 提供程序,它应该 compute 这些更改,即使它们是可选的。我会仔细检查您的地形配置和您修改的门户资源是否相同。您可能需要 运行 刷新一下。换句话说,当您 运行 terraform.
时,门户中的更改显示为漂移是很常见的。
这称为期望状态与当前状态。
如果您使用 Terraform 创建任何资源并手动修改它,Terraform 会在下次应用后将其还原。
在 Terraform Apply 命令之前,它将当前状态提取到状态文件中,然后将当前状态与所需状态进行比较。
如果有任何手动更改,它将进行必要的更改以使其成为 Desired 状态。
假设我使用 azurerm_app_service 使用最少的参数创建了一个应用程序服务。如果我稍后进入 Azure 门户并开始创建 IP 限制,然后 运行 Terraform 应用,Terraform 似乎不会检测到漂移并尝试撤消所有 IP 限制。这是按预期工作吗?是否有 Terraform 文档表明这是有意的?
这种行为对我们有利,因为它告诉我们只要参数或参数对象未在配置脚本中定义,Terraform 就可以进行配置漂移。我们打算让 Azure 门户用户在门户中修改可以和不可以的内容,而不必担心 Terraform 将其全部重置。
更新:已接受以下答案,并从 Hashicorp 的论坛收到更多反馈,https://discuss.hashicorp.com/t/terraform-not-detecting-drift-on-resources-intended-or-not/17547/4?u=terraform-man
这将取决于资源的实现方式、架构和正在发生的变化。通常对于 azurerm 提供程序,它应该 compute 这些更改,即使它们是可选的。我会仔细检查您的地形配置和您修改的门户资源是否相同。您可能需要 运行 刷新一下。换句话说,当您 运行 terraform.
时,门户中的更改显示为漂移是很常见的。这称为期望状态与当前状态。 如果您使用 Terraform 创建任何资源并手动修改它,Terraform 会在下次应用后将其还原。 在 Terraform Apply 命令之前,它将当前状态提取到状态文件中,然后将当前状态与所需状态进行比较。 如果有任何手动更改,它将进行必要的更改以使其成为 Desired 状态。