terraform-contour-mirror/live/terragrunt.hcl

93 lines
2.6 KiB
HCL

# Глобальная конфигурация Terragrunt
# Настройка удаленного бэкенда для хранения состояния
remote_state {
backend = "s3"
generate = {
path = "backend.tf"
if_exists = "overwrite_terragrunt"
}
config = {
endpoint = "storage.yandexcloud.net"
bucket = "tfstate-terragrunt-stage"
key = "${path_relative_to_include()}/terraform.tfstate"
region = "ru-central1"
access_key = get_env("S3_ACCESS_KEY", get_env("AWS_ACCESS_KEY_ID", ""))
secret_key = get_env("S3_SECRET_KEY", get_env("AWS_SECRET_ACCESS_KEY", ""))
skip_region_validation = true
skip_credentials_validation = true
skip_metadata_api_check = true
force_path_style = true
}
}
# Генерация общего провайдера для всех модулей
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 = var.yc_token != "" ? var.yc_token : null
cloud_id = var.yc_cloud_id != "" ? var.yc_cloud_id : null
folder_id = var.yc_folder_id != "" ? var.yc_folder_id : null
zone = "ru-central1-a"
}
provider "kubernetes" {
# Если kubeconfig_path не указан, провайдер использует дефолтный путь ~/.kube/config
# Если указан, берем только первый путь (KUBECONFIG может содержать несколько путей через :)
config_path = var.kubeconfig_path != "" ? split(":", var.kubeconfig_path)[0] : null
config_context = var.kube_context != "" ? var.kube_context : null
}
variable "yc_token" {
type = string
default = ""
description = "Yandex Cloud token"
}
variable "yc_cloud_id" {
type = string
default = ""
description = "Yandex Cloud ID"
}
variable "yc_folder_id" {
type = string
default = ""
description = "Yandex Cloud folder ID"
}
variable "kubeconfig_path" {
type = string
default = ""
description = "Path to kubeconfig file"
}
variable "kube_context" {
type = string
default = ""
description = "Kubernetes context"
}
EOF
}