Terraform有条件地排除资源块

时间:2019-11-22 07:18:10

标签: azure terraform terraform-provider-azure

以下内容专门针对terraform .11并适用于.12

下面是我正在使用的代码。这是一个数据块,用于从Azure共享图像库获取图像详细信息。

我有一个用于 image_version

的可变输入参数

我可以提供 image_version 作为特定版本(例如* 1.0.1或1.0.2 *),也可以将输入作为*最新版本*

如果在下面的代码中看到输出块,则如果image_version是最新给出的,则将执行第一个数据段,并且将给出最新的图像作为输出 如果我输入的不是最新信息-将执行第二个数据部分,并给出特定的图像ID作为输出

因此,此输出是我用来创建虚拟机的

### 1. latest section ####
data "azurerm_shared_image" "centos7" {
name                = "centos"
gallery_name        = "centos_galleries"
resource_group_name = "centos-galleries-rg"
}

### 2. image version number section ####
data "azurerm_shared_image_version" "centos7" {
name                = "1.0.1" ## [ This block fails when provided a dummy number ]
image_name          = "centos"
gallery_name        = "centos_galleries"
resource_group_name = "centos-galleries-rg"
}

output "id" {
value = "${var.image_version == "latest" ? data.azurerm_shared_image.centos7.id : data.azurerm_shared_image_version.centos7.id}"
}

现在的问题是,在第二个数据部分中,我指定名称= 1.0.1-应该是Shared Image Gallery中的现有版本。 如果我在代码中给出了一个不存在的版本号(例如name = 10.10.10)并给出了输入image_version = Latest,则理想情况下,仅应该评估第一个数据部分,并且应该可以正常工作-但对于terraform 11-第二个数据部分也得到评估,并且失败,名称= 10.10.10版本不存在。在这里,我提供了输入image_version = Latest-仍然失败

那么有没有办法我可以有条件地排除一个完整的数据部分,或者有什么更好的办法可以重写此代码?

0 个答案:

没有答案
相关问题