运行terraform destroy时如何防止删除资源组?

时间:2019-01-31 15:20:07

标签: azure terraform

我已经创建了资源组(未使用我的代码创建)。

我运行terraform apply并创建了我的基础设施。但是当我运行terraform destroy时-控制台说我的资源组也应该删除。这不应该发生,因为不仅我的基础设施位于此资源组中。

我已尝试按照此处https://stackoverflow.com/a/47446540/10912908所述使用Terraform导入,并获得了与以前相同的结果。

此外,我尝试仅使用名称来定义资源组,但是它不起作用(。Terraform destroy会删除该资源

resource "azurerm_resource_group" "testgroup" {    
name = "Test-Group"    
}

2 个答案:

答案 0 :(得分:1)

您不必在配置中包括资源组资源,这样资源组就不会被破坏(因为配置中的所有资源都将被破坏)。如果您依赖该资源的输出,则可以改用数据资源。

data "azurerm_resource_group" "test" {
  name = "Test-Group"
}

OP还需要从状态文件中删除资源组。

答案 1 :(得分:0)

此bash脚本可以工作:

terraform state list | while read line
do 
if [[ $line == azurerm_resource_group* ]]; then
echo $line " is a resource group and will not be deleted!"
else
echo "deleting: " $line
terraform destroy -target $line -auto-approve
fi
done

它列出了由terraform管理的所有资源,然后为每个条目运行删除脚本,但包含“ azurerm_resource_group *”的行除外