#git #kubernetes #terraform
#git #kubernetes #терраформировать
Вопрос:
Существует ли рекомендуемый шаблон или решение для сохранения определений отдельных служб Terraform в их соответствующих репозиториях кода, сохраняя при этом возможность одновременного обновления всей инфраструктуры проекта?
Мы переходим на GCP из управляемой службы и уже используем Github Actions.
Я думал о том, чтобы сделать это несколькими различными способами, либо через частные модули Terraform в GCS, либо с использованием подмодулей git.
Хотя мы могли бы использовать единый центральный репозиторий для всех файлов Terraform, я бы предпочел, чтобы определения служб находились в их соответствующих репозиториях, чтобы избежать ошибок и не допустить, чтобы будущие участники пропустили изменение определений служб, где это необходимо.
Комментарии:
1. Да, вы бы использовали модули и объявляли их в корневой конфигурации. Не используйте подмодули git для чего-либо подобного, поскольку они используются, когда в программном обеспечении / инструменте не существует собственного решения.
2. В GCP я бы также рассмотрел Config Connector в качестве альтернативы: cloud.google.com/blog/products/containers-kubernetes /…
Ответ №1:
Взгляните на Terragrunt:https://terragrunt.gruntwork.io /
При объявлении terraform
блока source
аргументом может быть ссылка на другое репозиторий git https://terragrunt.gruntwork.io/docs/features/keep-your-terraform-code-dry/#remote-terraform-configurations
Чтобы обновить весь проект сразу, есть terragrunt plan-all
, terragrunt apply-all
и очень удобно terragrunt graph-dependencies
.
Gruntwork (организация, которая создала это) имеет набор бесплатных модулей https://github.com/gruntwork-io /, набор платных модулей (ежемесячная подписка) и, конечно, вы можете использовать свои собственные модули.
Комментарии:
1. Прочитал документы, так что, похоже, для доступа к этим удаленным конфигурациям я бы включил SSH auth, правильно звучит? terragrunt.gruntwork.io/docs/features /…
2. Да, для частных репозиториев компьютер, на котором вы запускаете terragrunt, должен иметь ssh-доступ к репозиториям для извлечения. Он в основном извлекает все зависимости в
.terragrunt-cache
, а затем запускает terraform.