В итоге я написал простой PHP скрипт для чтения файла env, проанализировал его, как я хотел (explode()
, удалите строки с помощью '#', никаких других переменных и т.д. c, затем implode()
снова) и просто проверьте это в моем make-файле первым. Выглядит это так:
provision:
@eval $(php ./scripts/terraform-env-vars.php); \
terraform init ./deployment/terraform; \
terraform apply -auto-approve ./deployment/terraform/
К сожалению, у terraform возникла нелепая идея, что все переменные среды должны иметь префикс TF_VAR_
.
Я решил это с помощью комбинация grep
и sed
, с идеей, что я бы regex заменил все переменные окружения на требуемый префикс.
Во-первых, вам нужно объявить входную переменную с тем же самым имя в качестве переменной среды в вашем файле .tf:
variable "MY_ENV_VAR" {
type = string
}
Затем перед командой terraform используйте следующее:
export $(shell sed -E 's/(.*)/TF_VAR_\1/' my.env | grep -v "#" | grep -v "TF_VAR_$"); terraform apply
Что это делает:
- Использует
sed
для захвата каждой строки в группе захвата с (.*)
, затем в префиксах замены TF_VAR
с первой группой захвата (\1
) - Использует grep для удаления всех строк с комментариями (что-либо с
#
). - Использует grep для удаления всех строк, имеющих только
TF_VAR
.
К сожалению, это также имеет кучу других переменных среды, созданных с Префикс TF_VAR
и я не уверен почему, но это по крайней мере начало использования .env
файлов с terraform.