使用Terraform上的条件在Azure上部署资源

mec1mxoz  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(188)

我目前正在开发新的terraform模块,并面临一些问题,验证现有的资源,如资源组。
使用ARM模板可以在选项deploy不存在的情况下使用它。但我在Terraform代码中找不到类似的解决方案。
例如,在创建全新的资源组之前。我想检查订阅是否包含它,如果没有,请创建它。

resource "azurerm_resource_group" "mssql_server_resource_group" {
  name     = var.mssql_resource_group_name
  location = "eastus"

  # Check if resource group exists before creating
  lifecycle {
    ignore_changes        = [tags] # Ignore tag changes to prevent unnecessary updates
    create_before_destroy = true   # Create a new resource before destroying the existing one
  }
}

我找到了上面的例子,但它不起作用。

wkyowqbh

wkyowqbh1#

要检查资源组是否已经存在,你可以尝试下面的代码为我工作.
我尝试使用count操作符来检查条件,如下所示:

provider "azurerm"{
features{}
}
variable "resource_group"{
type = string
}
data "azurerm_resource_group" "example" {
  name = var.resource_group
}
resource "azurerm_resource_group" "example" {
  count = length(data.azurerm_resource_group.example) == 0 ? 1 : 0
  name     = var.resource_group
  location = "eastus"
}

terraform init

运行Terraform计划后,它提示我输入resource group变量。我使用了现有的一个,输出如下。

为了再次验证,我使用新的资源组名运行terraform plan,它返回状态"resource not found"。然后,您可以检查状态并相应地继续。

或者,您可以使用以下命令查看Terraform state文件,包括resource ID。如果资源存在,则检索以下资源信息。

terraform state show azurerm_resource_group.example

相关问题