Я хочу использовать ресурсы, в данном случае вывод модуля vpc, в другой среде. Цель состоит в том, чтобы снизить затраты для клиента за счет ресурсов стадии и разработчика в одном и том же vpc. Stage и dev имеют отдельные ecs-cluster, asg, lc, разные образы докеров в ecr и т. Д., Но должны находиться в одном vpc с одним и тем же балансировщиком нагрузки, а затем прослушивателем заголовка хоста для пересылки в конкретную целевую группу. Оба должны использовать одну и ту же базу данных и один и тот же балансировщик нагрузки.
Требование заключалось в том, чтобы иметь по n заказчиков со средами stage, dev и prod. Все папки клиента должны содержать три среды.
Моя структура папок
├── Terraform
│ ├── Customer1
│ ├── Customer2
│ ├── Customer3
│ ├── Customer4
│ ├── Customer5
│ ├── Global
│ │ ├── iam
│ │ │ └── terragrunt.hcl
│ ├── README.md
│ └── Customer6
│ ├── non-prod
│ │ ├── eu-central-1
│ │ │ ├── dev
│ │ │ │ ├── cloudwatch
│ │ │ │ │ └── terragrunt.hcl
│ │ │ │ ├── ec2
│ │ │ │ │ └── terragrunt.hcl
│ │ │ │ ├── ecs
│ │ │ │ │ └── terragrunt.hcl
│ │ │ │ ├── lambda
│ │ │ │ │ └── terragrunt.hcl
│ │ │ │ ├── rds
│ │ │ │ │ └── terragrunt.hcl
│ │ │ │ ├── terragrunt.hcl
│ │ │ │ ├── vars.hcl
│ │ │ │ └── vpc
│ │ │ │ └── terragrunt.hcl
│ │ │ ├── region.hcl
│ │ │ └── stage
│ │ │ ├── cloudwatch
│ │ │ │ └── terragrunt.hcl
│ │ │ ├── ec2
│ │ │ │ └── terragrunt.hcl
│ │ │ ├── ecs
│ │ │ │ └── terragrunt.hcl
│ │ │ ├── lambda
│ │ │ │ └── terragrunt.hcl
│ │ │ ├── rds
│ │ │ │ └── terragrunt.hcl
│ │ │ ├── terragrunt.hcl
│ │ │ ├── vars.hcl
│ │ │ └── vpc
│ │ │ └── terragrunt.hcl
│ │ └── terragrunt.hcl
│ └── prod
│ └── eu-central-1
│ ├── prod
│ │ ├── cloudwatch
│ │ │ └── terragrunt.hcl
│ │ ├── ec2
│ │ │ └── terragrunt.hcl
│ │ ├── ecs
│ │ │ └── terragrunt.hcl
│ │ ├── lambda
│ │ │ └── terragrunt.hcl
│ │ ├── rds
│ │ │ └── terragrunt.hcl
│ │ ├── terragrunt.hcl
│ │ ├── vars.hcl
│ │ └── vpc
│ │ └── terragrunt.hcl
│ └── region.hcl
└── Modules
├── cloudwatch
│ ├── Main.tf
│ ├── Outputs.tf
│ └── Variables.tf
├── ec2
│ ├── Main.tf
│ ├── Outputs.tf
│ └── Variables.tf
├── ecs
│ ├── Main.tf
│ ├── Outputs.tf
│ └── Variables.tf
├── iam
│ ├── Main.tf
│ ├── Outputs.tf
│ └── Variables.tf
├── lambda
│ ├── Main.tf
│ ├── Outputs.tf
│ └── Variables.tf
├── rds
│ ├── Main.tf
│ ├── Outputs.tf
│ └── Variables.tf
├── vpc
│ ├── Main.tf
│ ├── Outputs.tf
│ ├── Variables.tf
└── vpc-stage
├── Main.tf
├── Outputs.tf
└── Variables.tf
Я читал о данных terraform_remote_state, но это на уровне модуля. Для меня это не лучший подход делать это на уровне модуля, потому что это только для среды сцены. Есть ли способ получить выходные данные из удаленного состояния в terragrunt.hcl в папке stage из среды разработки, чтобы использовать их в качестве входных данных для модуля ec2?
Я использовал
dependency "vpc" {
config_path = "../vpc"
}
а потом
vpc_id = dependency.vpc.outputs.vpc_id
для ввода модуля ec2, но только если он находится в той же среде.
С наилучшими пожеланиями.