В любом данном Terraform dir, я не думаю, что какие-либо .tf
файлы имеют какую-либо конкретную функцию, кроме как дать вам некоторую информацию о том, как вы распределили свои ресурсы и / или организоваливаш код.Таким образом, main.tf
и variables.tf
могут быть объединены в 1 файл без потери функции.
В вашей настройке ваш variables.tf
будет иметь набор переменных, каждый из которых будет иметь значение default
(илиКоманды else terraform x
запрашивают их значения).В качестве альтернативы вы можете опустить значения default
и вместо этого создать файл terraform.tfvars
, который устанавливает значения для каждой переменной.
В этой настройке с отдельными директориями для каждой среды (prod, test, dev и т. Д.), Я предпочитаю использовать terraform.tfvars
, так как мне легче делать различия, и я знаю, что единственное, что янеобходимо изменить с любым заданным env файл terraform.tfvars
.
Например, cidr_block
может быть переменной, которую вы указываете для каждого env, а затем передавать в модуль aws_vpc
. prod может быть 192.168.0.0/16, в то время как test может иметь 10.1.0.0/16.
Что касается модуля, хотя может показаться, что все переменные повторяются / дублируются с кодом в директории среды, это не дано.Например, у вас может быть переменная в вашем коде env, которая является логическим значением, которое передается в ваш модуль как ввод, который модуль затем использует для принятия определенных «решений».