从资源中更新Terraform变量

时间:2019-01-04 15:13:19

标签: 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"
    }
}

有问题的行是:

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

1 个答案:

答案 0 :(得分:0)

TL; DR

您无法更新变量。

关于HCL

Terraform正在使用HCL语言。

此语言是说明性的,不是过程性或OOP的。 这意味着一旦定义了它,terraform将不允许您在运行时修改其值。

从地形documentation

  

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

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