Есть ли более простой способ запуска команд terraform с помощью npm или самостоятельно, когда у вас несколько сред? это работает как на win, так и на linux?
В настоящее время я пытаюсь создать базовый набор инфраструктуры для трех разных проектов через облако terraform.
У меня есть 3 рабочих места:
- разработка
- постановка
- производство
со своими собственными переменными, определенными для учетных записей служб, и все такое.
Я хочу, по крайней мере, на данный момент, взаимодействовать с инфраструктурой через интерфейс командной строки с моей локальной машины. Проблема в том, что я должен определить рабочее пространство в моемbackend
как жестко закодированная строка, поэтому я не могу вставить переменную.
Я нашел умный способ обойти это, используяdev.hcl
файлы, которые содержат данные о бэкэнде, поэтому я могу просто запустить:
terraform -chdir=infrastructure init -backend-config="dev.hcl"
Это работает, но мне приходится много печатать всякий раз, когда я хочу запустить init/plan/apply, поэтому я ищу более простой способ упростить это.
Я пробовал создавать скрипты в корнеpackage.json
и динамически менятьсяdev
к аргументу, переданному в CLI, к сожалению, это не работает согласованно в Windows и Linux, и из-за того, что порядок команд должен быть точным с CLI terraform, у меня нет вариантов.
Текущие сценарии, которые у меня есть в package.json:
"tf-init-dev": "terraform -chdir=infrastructure init -backend-config=\"dev.hcl\"",
"tf-plan-dev": "terraform -chdir=infrastructure plan -backend-config=\"dev.hcl\"",
"tf-apply-dev": "terraform -chdir=infrastructure apply -backend-config=\"dev.hcl\"",
"tf-init-stage": "terraform -chdir=infrastructure init -backend-config=\"stage.hcl\"",
"tf-plan-stage": "terraform -chdir=infrastructure plan -backend-config=\"stage.hcl\"",
"tf-apply-stage": "terraform -chdir=infrastructure apply -backend-config=\"stage.hcl\"",
"tf-init-prod": "terraform -chdir=infrastructure init -backend-config=\"prod.hcl\"",
"tf-plan-prod": "terraform -chdir=infrastructure plan -backend-config=\"prod.hcl\"",
"tf-apply-prod": "terraform -chdir=infrastructure apply -backend-config=\"prod.hcl\"",
и я думаю, что буду добавлять более часто используемые по мере развития проекта.
Есть ли лучший способ решения этого варианта использования?