Terraform для чтения переменных из окружения - PullRequest
0 голосов
/ 20 июня 2020

Я написал конфигурацию terraform с определением переменной, например:

variable "GOOGLE_CLOUD_REGION" {
  type = string
}

Когда я запускаю terraform plan, меня просят заполнить эту переменную, даже если эта переменная установлена ​​в моей среде.

Есть ли способ указать terraform работать с текущими переменными env? Или мне нужно их экспортировать и передавать как-то вручную по одному?

Ответы [ 3 ]

2 голосов
/ 20 июня 2020

Вы можете определить переменную окружения TF_VAR_GOOGLE_CLOUD_REGION, чтобы установить эту переменную.

Если вы используете bash, это может выглядеть так:

export TF_VAR_GOOGLE_CLOUD_REGION="$GOOGLE_CLOUD_REGION"
terraform apply ...

From Переменные среды в разделе «Язык конфигурации: Входные переменные».

В качестве альтернативы другим способам определения переменных Terraform ищет в среде своего собственного процесса переменные среды с именами TF_VAR_, за которыми следует имя объявленной переменной.

Это может быть полезно при запуске Terraform в автоматическом режиме или при последовательном выполнении последовательности команд Terraform с одними и теми же переменными. Например, при запросе bash в системе Unix:

$ export TF_VAR_image_id = ami-abc123 $ terraform plan ...

0 голосов
/ 22 июня 2020

Я бы подошел к этому, создав файл variables.tf в каталоге проекта. с требуемым блоком переменных вы можете указать значение по умолчанию:

variable "GOOGLE_CLOUD_REGION" {
type = string
default = "us-west1"
}

это будет затем использоваться как значение по умолчанию во время каждого запуска, и вам не будет предлагаться.

0 голосов
/ 20 июня 2020

Вы можете создать файл, который заканчивается на .tfvars или .tfvars.json, а затем при запуске plan вы указываете этот файл:

terraform apply -var-file="example.tfvars"

Если вы называете файл terraform.tfvars или terraform.tfvars.json или файл с именами, заканчивающимися на .auto.tfvars или .auto.tfvars.json, тогда Terraform автоматически загружает файл определения переменной, и вам не нужно указывать его вручную, когда вы запустите plan.

Пример того, как будет выглядеть файл terraform.tfvars:

first_env_var = "environment_variable_one"
second_env_var = "environment_variable_two"

Пример того, как будет выглядеть файл terraform.tfvars.json:

{
  "image_id": "ami-abc123",
  "availability_zone_names": ["us-west-1a", "us-west-1c"]
}
...