如何仅在Azure中不存在azurerm_资源组时通过terraform创建该资源组?

如何仅在Azure中不存在azurerm_资源组时通过terraform创建该资源组?,azure,terraform,terraform-provider-azure,Azure,Terraform,Terraform Provider Azure,我希望我的terraform脚本仅在Azure中不存在资源组时创建资源组,否则它应该跳过资源组的创建。terraform是声明性的,而不是强制性的。使用Terraform时,不需要检查现有资源 验证tf脚本的步骤 terraform plan 以及应用tf脚本更改 terraform apply 这将验证资源(如果资源已经存在)并创建(如果不存在)那么,您可以使用执行CLI命令来检查资源组是否存在。然后使用结果确定资源组是否将创建。以下是一个例子: /main.tf provider

我希望我的terraform脚本仅在Azure中不存在资源组时创建资源组,否则它应该跳过资源组的创建。

terraform是声明性的,而不是强制性的。使用Terraform时,不需要检查现有资源

验证tf脚本的步骤

terraform plan 
以及应用tf脚本更改

terraform apply  
这将验证资源(如果资源已经存在)并创建(如果不存在)

那么,您可以使用执行CLI命令来检查资源组是否存在。然后使用结果确定资源组是否将创建。以下是一个例子:

/main.tf

provider "azurerm" {
    features {}
}

variable "group_name" {}

variable "location" {
    default = "East Asia"
}

data "external" "example" {
    program = ["/bin/bash","./script.sh"]

    query = {
        group_name = var.group_name
    }
}

resource "azurerm_resource_group" "example" {
    count = data.external.example.result.exists == "true" ? 0 : 1
    name = var.group_name
    location = var.location
}
/script.sh

#!/bin/bash 

eval "$(jq -r '@sh "GROUP_NAME=\(.group_name)"')"
result=$(az group exists -n $GROUP_NAME)

jq -n --arg exists "$result" '{"exists":$exists}'

如果资源组存在,我不希望terraform脚本执行失败。我希望脚本继续在脚本中创建其他资源。有没有办法做到这一点。谢谢查尔斯的解决方案。这个解决方案适合我,但我一直在寻找一个解决方案,我们可以检查资源组是否存在,或者是否使用terraform功能或特性。此解决方案依赖于azure cli。有没有其他方法可以实现这一点。@parasmehta当您希望脚本始终成功时,没有terraform函数可用于检查资源组是否存在。我的回答是你实现目标的唯一途径。非常感谢您的帮助和时间:)。@parasmehta好吧,如果它对您有效,请接受它。当然@CharlesXu:)