Терраформировать локальную среду. переменные против облачных переменных

Сейчас я изучаю терраформирование и обнаружил ситуацию, которая мне не понятна.

Я настроил свой проект TF на использование облака TF для хранения файла состояния. Очевидно, это хорошая практика, поскольку я не хочу хранить файл локально. У меня есть пара переменных, которые я хотел бы объявить как env. переменные; т.е. TF_VAR_region="xyz".

Проблема в том, что когда я хочу использовать эту переменнуюtf planговорит, что переменная неизвестна (даже если она установлена ​​локально). Когда я устанавливаю переменную в рабочей области облака TF или как набор переменных, назначенный рабочей области. это работает, но показывает мне:

      │ Warning: Value for undeclared variable
│ 
│ The root module does not declare a variable named "region" but a value was
│ found in file
│ "/home/tfc-agent/.tfc-agent/component/terraform/runs/run-XXXX/terraform.tfvars".
│ If you meant to use this value, add a "variable" block to the
│ configuration.
│ 
│ To silence these warnings, use TF_VAR_... environment variables to provide
│ certain "global" settings to all configurations in your organization. To
│ reduce the verbosity of these warnings, use the -compact-warnings option.

Я не хочу устанавливать переменные в файлеvariable.tf, потому что одна из этих переменных является конфиденциальной, и я не хочу фиксировать ее в репозитории. Кроме того, я как бы не хочу объявлять переменные вручную в облаке TF, поскольку... ну, это ручное действие, при котором я могу просто забыть, что где-то что-то установил. Для меня было бы лучше, если бы все было в «одном месте», так сказать (т.е. в readme у меня было бы описание того, что мне нужно установить переменные env, чтобы процесс работал).

Есть ли способ использовать облако TF для хранения файла состояния, но в то же время иметь возможность использовать локальные переменные? т.е. при запуске локального terraform применяется.

1 ответ

Вам не нужно устанавливать значения переменных внутриvariables.tfфайл

      variable "var_name" {
  description = "Secret variable"
  type        = string
  sensitive   = true
}

предложит вам установить значение переменной, если оно не установлено еще где:

      $ terraform plan

var.var_name
  Secret variable

  Enter a value:

С другой стороны, определение переменных внутри конфигурации является хорошим стилем и четко описывает terraform, какие переменные следует установить перед этим.planилиapply

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

И это еще одна причина определять переменную внутри конфигурации.terraformвызовет ошибку, если вы забудете установитьsomethingэто описано в конфигурацииsomewhere. Потому что ошибку легче отладить, чем молчание

Вот статья о переменных, которая может быть полезна

Другие вопросы по тегам