使用Terraform更新现有的应用程序服务

时间:2019-09-21 10:23:36

标签: azure terraform

我的Azure帐户中的

有一些资源。资源组,应用程序服务,存储帐户... 我已经使用Azure门户或Powershell创建了这些资源。 然后,我编写了一个terraform脚本来添加 other 资源并 update 一些现有资源。特别是我对更新应用程序服务感兴趣。我想向其中添加一些设置和托管身份。 发生的事情是terraform说:“看,已经有一个具有您指定名称的应用程序服务”。 我尝试使用“ terraform导入”将现有的应用程序服务绑定到我的terrafom状态文件,但是这样做是因为我丢失了已放入terraform文件中的设置。

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

1 个答案:

答案 0 :(得分:1)

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
  • 添加名称参数,并使用loc变量添加位置
  • 重新运行terraform计划,它应该没有错误,也没有计划的更改
  • 现在,资源已完全导入,并且在Terraform的控制下安全地运行。