Если вы не хотите использовать Рабочие пространства Terraform , создайте в каждом подкаталоге символическую ссылку, указывающую на файл versions.tf
.
Например, если ваша структура:
terraform
├── dev
│ └── main.tf
├── prod
│ └── main.tf
├── stg
│ └── main.tf
└── versions.tf
И вы хотите, чтобы каждый подкаталог (dev
, prod
, stg
) указывал на файл versions.tf
в корневом каталоге terraform
, создавая символическую ссылку в каждом подкаталоге:
ln -sf terraform/versions.tf terraform/dev/versions.tf
ln -sf terraform/versions.tf terraform/prod/versions.tf
ln -sf terraform/versions.tf terraform/stg/versions.tf
Ваша окончательная структура будет:
terraform
├── dev
│ └── main.tf
│ └── versions.tf -> ../versions.tf
├── prod
│ └── main.tf
│ └── versions.tf -> ../versions.tf
├── stg
│ └── main.tf
│ └── versions.tf -> ../versions.tf
└── versions.tf
Используя рабочие пространства Terraform, вместо наличия подкаталога для каждой «среды», которую вы используете, используйте один каталог, например:
terraform
├── main.tf
└── versions.tf
И рабочее пространство для среды, которую вы создаете, выполняя:
terraform workspace new dev
Затем вы используете интерполяцию terraform, чтобы сделать что-то другое, в зависимости от того, в какой среде вы работаете, состояния terraform также сохраняются отдельно для каждого рабочего пространства.
Итак, если вы хотите работать в среде dev
, переключитесь на нее:
terraform workspace select dev