terraform-contour-mirror/live/terragrunt.hcl
kochetkov.s cd68e73e40 feat: Add Terraform infrastructure for pulse project
- Add modules: yc-s3, yc-postgresql, k8s-namespace, k8s-secrets
- Add live configuration for stage environment
- Add GitLab CI with downstream pipelines
- Implement best practices from theory.md
2026-01-19 15:15:14 +03:00

64 lines
1.8 KiB
HCL

# Глобальная конфигурация Terragrunt
# Настройка удаленного бэкенда для хранения состояния
remote_state {
backend = "s3"
generate = {
path = "backend.tf"
if_exists = "overwrite_terragrunt"
}
config = {
endpoint = "storage.yandexcloud.net"
bucket = get_env("TF_STATE_BUCKET", "terraform-state-pulse")
key = "${path_relative_to_include()}/terraform.tfstate"
region = "ru-central1"
skip_region_validation = true
skip_credentials_validation = true
skip_requesting_account_id = true
skip_metadata_api_check = true
force_path_style = true
# Настройка блокировок состояний через Yandex Database (YDB)
dynamodb_endpoint = get_env("TF_STATE_DYNAMODB_ENDPOINT", "")
dynamodb_table = get_env("TF_STATE_DYNAMODB_TABLE", "terraform-locks")
}
}
# Генерация общего провайдера для Yandex Cloud
generate "provider" {
path = "provider.tf"
if_exists = "overwrite_terragrunt"
contents = <<EOF
terraform {
required_version = ">= 1.0"
required_providers {
yandex = {
source = "yandex-cloud/yandex"
version = "~> 0.100"
}
kubernetes = {
source = "hashicorp/kubernetes"
version = "~> 2.23"
}
random = {
source = "hashicorp/random"
version = "~> 3.1"
}
}
}
provider "yandex" {
token = get_env("YC_TOKEN", "")
cloud_id = get_env("YC_CLOUD_ID", "")
folder_id = get_env("YC_FOLDER_ID", "")
zone = "ru-central1-a"
}
provider "kubernetes" {
config_path = get_env("KUBECONFIG", "~/.kube/config")
config_context = get_env("KUBE_CONTEXT", "")
}
EOF
}