在运行时,我想告诉terraform哪些变量将从我的.tfvars文件中使用,我有以下值:
website-review-author = "test1/fwsfds/34131"
website-dev-publish = "test2/fwsfds/34131"
website-other-dispatcher = "test3/fwsfds/34131"因此,我希望data_source_id在运行时根据参数使用这些变量:
resource "azurerm_managed_disk" "datadisk" {
name = "${var.default_prefix}-${var.environment}-datadisk"
location = "${var.default_region}"
resource_group_name = "${var.permanent_resources_rg}"
storage_account_type = "${var.disk_type}"
create_option = "Copy"
source_resource_id = "${var.website_review_publish.id}" ## I need to be a dynamic variable. So sometimes it will se website_review_author, other time website-dev-publish
disk_size_gb = "${var.data_disk_size_gb}"
tags = "${var.tags}"
depends_on = [
azurerm_storage_account.storage
#azurerm_managed_disk.osdisk
]
}在terrraform中是否有可能在变量之间切换,从而得到适当的值。条件是:
If (var.environment == website-review-author) ## Can be
website-dev-publish or #website-other-dispathcer
then
source_resource_id = var.website-review-author #or other value based
on the parameter我对地形还不熟悉,所以还在学习我的生活方式。我需要类似的条件。
发布于 2022-04-26 15:50:36
您可以使用ternary操作符1。如果您决定沿着这条路线走下去,那么代码将如下所示:
resource "azurerm_managed_disk" "datadisk" {
name = "${var.default_prefix}-${var.environment}-datadisk"
location = "${var.default_region}"
resource_group_name = "${var.permanent_resources_rg}"
storage_account_type = "${var.disk_type}"
create_option = "Copy"
source_resource_id = var.environment == website-review-author ? var.website-review-author : var.environment == website-dev-publish ? var.website-dev-publish : var.environment == website-other-dispatcher ? var.website-other-dispatcher : null
disk_size_gb = "${var.data_disk_size_gb}"
tags = "${var.tags}"
depends_on = [
azurerm_storage_account.storage
]
}使用其他逻辑运算符2可以使它变得更加复杂,但是如果您需要所有三个不同的值,那么我建议使用workspaces 3。例如,在这种情况下,您可以使用三元运算符的workspace名称来决定要分配哪个值:
source_resource_id = terraform.workspace == <someworkspacename> ? var.webiste-review-author : var.website-dev-publish编辑:我添加了所有三个条件。它确实很丑,但它应该能用。我建议创建一个类型为map的不同变量,然后使用它来创建资源。此外,无论何时更改环境值,资源都可能被销毁和重新创建,因此最好使用count或for_each。
https://stackoverflow.com/questions/72016035
复制相似问题