从资源更新 terraform 变量

Dav*_*llo 5 variables terraform

我想从 terraform 上的资源更新变量。

那可能吗?我对这项技术有点陌生。

variable "contador" {
    default = 0
}

resource "azurerm_managed_disk" "test-disks-test3" {
    count                   = "${length(var.disks_size) * var.vm_number}"
    name                    = "SRV${var.service_base_name}${var.service_environment}01-DATADISK-0${count.index}"
    location                = "westeurope"
    resource_group_name     = "${azurerm_resource_group.test-rg-test3.name}"
    storage_account_type    = "${var.disk_tier}_${var.disk_replication}"  
    create_option           = "Empty"
    disk_size_gb            = "${element(var.disks_size, count.index)}"

    var.contador            = "${count.index % length(var.disks_size) == (length(var.disks_size) - 1) ? (var.contador + 1)  : var.contador}"

    tags{
        environment = "TestWork"
    }
}
Run Code Online (Sandbox Code Playgroud)

有问题的行是:

var.contador = "${count.index % length(var.disks_size) == (length(var.disks_size) - 1) ? (var.contador + 1)  : var.contador}"
Run Code Online (Sandbox Code Playgroud)

Que*_*vel 3

长话短说

您无法更新该变量。

关于HCL

Terraform 使用HCL语言。

这种语言是声明性的,而不是过程性的或面向对象的。这意味着一旦定义了它,terraform 就不允许您在运行时修改它的值。

来自 terraform文档

输入变量的默认值必须是文字值,不包含插值表达式。要将名称分配给表达式以便可以在模块中重复使用,请改用本地值。

此外,在您的resource块中,您只能使用该资源定义的参数var.contador,而不是其中之一。