Переменные — это статические, буквальные входные данные вашей конфигурации, которые поступают либо из командной строки, либо из
override_s3_bucket_name
files. It is not possible to use interpolations here, since the variable values are processed before interpolation begins in order to make them available to other expressions.
Если цель состоит в том, чтобы определить имя корзины S3 в одном месте и повторно использовать его несколько раз в одной и той же конфигурации, Местные ценности функция может сделать это, если вы используете Terraform v0.10.4 или новее. Вы можете объявить именованное значение в одном из ваших
variable "override_s3_bucket_name" {
default = ""
}
locals {
s3_bucket_name = "${var.override_s3_bucket_name != "" ? var.override_s3_bucket_name : "tf-${terraform.workspace}"}"
}
resource "aws_s3_bucket" "s3" {
bucket = "${local.s3_bucket_name}"
...
}
files:
resource "aws_s3_bucket" "s3" {
bucket = "${local.s3_bucket_name}"
...
}
Затем вы можете интерполировать это значение в различных местах вашей конфигурации, используя имя
local.s3_bucket_name
, like this:
locals {
s3_bucket_name = "tf-${terraform.workspace}"
}
Локальные значения концептуально аналогичны выходы модуля но они предоставляются внутри того же модуля, в котором они определены, вместо того, чтобы передавать значение родительскому модулю.
Если цель состоит в том, чтобы разрешить возможность переопределения этого сгенерированного имени по умолчанию переменной, то этого можно достичь с помощью некоторой условной логики:
.tf
Приведенное выше сгенерирует имя по умолчанию на основе выбранного рабочего пространства, если
tfvars
is not set, but if that variable is set then its value will be used instead.