使用 Terraform 更新现有应用服务



在我的Azure帐户a中有一些资源。资源组、应用服务、存储帐户... 我已使用 Azure 门户或 Powershell 创建了这些资源。 然后,我编写了一个 terraform 脚本来添加其他资源并更新一些现有资源。特别是我对更新应用服务感兴趣。我想向其添加一些设置和托管标识。 发生的情况是,terraform 说:"看,已经有一个应用服务具有你指定的名称"。 我尝试使用"地形导入"将现有应用服务绑定到我的 terrafom 状态文件,但这样做会丢失我在地形文件中放置的设置。

我该如何解决这个问题?谢谢。

terraform import

是要走的路。如果文件中有任何现有设置:只需将其删除,直到完全导入应用服务。

完整教程 - 使用资源组而不是应用服务,但原理相同: https://azurecitadel.com/automation/terraform/lab6/#lab-importing-resources

  • 创建资源组:
Grab the ID for the azure resource: id=$(az group show --name deleteme --query id --output tsv)

在新 import.tf 文件中为资源创建一个空节

resource "azurerm_resource_group" "deleteme" {}
  • 运行导入命令:
terraform import azurerm_resource_group.deleteme $id
terraform-labs$ terraform import azurerm_resource_group.deleteme $id
Acquiring state lock. This may take a few moments...
azurerm_resource_group.deleteme: Importing from ID "/subscriptions/2d31be49-d999-4415-bb65-8aec2c90ba62/resourceGroups/deleteme"...
azurerm_resource_group.deleteme: Import complete!
Imported azurerm_resource_group (ID: /subscriptions/2d31be49-d999-4415-bb65-8aec2c90ba62/resourceGroups/deleteme)
azurerm_resource_group.deleteme: Refreshing state... (ID: /subscriptions/2d31be49-d999-4415-bb65-8aec2c90ba62/resourceGroups/deleteme)
Import successful!
The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.
  • terraform plan运行,您应该会看到一些错误,因为我们的块未填充
  • 运行terraform state show azurerm_resource_group.deleteme
id       = /subscriptions/2d31be49-d999-4415-bb65-8aec2c90ba62/resourceGroups/deleteme
location = westeurope
name     = deleteme
tags.%   = 0
  • 添加 name 参数,并使用 loc 变量添加位置
  • 重新运行地形规划,它应该不显示任何错误,也没有计划的更改
  • 该资源现已完全导入,并安全地处于 Terraform 的控制之下。

最新更新