mirror of
https://gitlab.sarex.io/infra/terraform-contour-mirror.git
synced 2026-08-05 18:31:00 +03:00
change pipeline generation + add tf dockerfile
This commit is contained in:
parent
06f4246c07
commit
2fb0b416d7
@ -1,23 +1,19 @@
|
||||
# Включение корневой конфигурации
|
||||
include "root" {
|
||||
path = find_in_parent_folders()
|
||||
}
|
||||
|
||||
# Включение конфигурации окружения
|
||||
include "env" {
|
||||
path = find_in_parent_folders("env.hcl")
|
||||
expose = true
|
||||
merge_strategy = "deep"
|
||||
}
|
||||
|
||||
# Зависимости от других компонентов
|
||||
dependency "namespace" {
|
||||
config_path = "../namespace"
|
||||
mock_outputs = {
|
||||
name = "pulse"
|
||||
}
|
||||
mock_outputs_allowed_terraform_commands = ["validate", "plan"]
|
||||
# При apply используем реальные outputs, не mock
|
||||
}
|
||||
|
||||
dependency "s3" {
|
||||
@ -28,7 +24,6 @@ dependency "s3" {
|
||||
secret_key = "mock-secret-key"
|
||||
}
|
||||
mock_outputs_allowed_terraform_commands = ["validate", "plan"]
|
||||
# При apply используем реальные outputs, не mock
|
||||
}
|
||||
|
||||
dependency "database" {
|
||||
@ -40,10 +35,8 @@ dependency "database" {
|
||||
password = "mock-password"
|
||||
}
|
||||
mock_outputs_allowed_terraform_commands = ["validate", "plan"]
|
||||
# При apply используем реальные outputs, не mock
|
||||
}
|
||||
|
||||
# Сертификат Yandex Cloud PostgreSQL (константа, не копируется в infrastructure.yaml)
|
||||
locals {
|
||||
yc_postgresql_ca_cert = <<-EOT
|
||||
-----BEGIN CERTIFICATE-----
|
||||
@ -112,20 +105,26 @@ EOT
|
||||
env_name = basename(dirname(get_terragrunt_dir()))
|
||||
env_config = local.infra_config.environments[local.env_name]
|
||||
secrets = local.env_config.secrets
|
||||
|
||||
namespace_name = dependency.namespace.outputs.name
|
||||
s3_bucket_name = dependency.s3.outputs.bucket_name
|
||||
s3_access_key = dependency.s3.outputs.access_key
|
||||
s3_secret_key = dependency.s3.outputs.secret_key
|
||||
db_host = dependency.database.outputs.host
|
||||
db_database_name = dependency.database.outputs.database_name
|
||||
db_user_name = dependency.database.outputs.user_name
|
||||
db_password = dependency.database.outputs.password
|
||||
}
|
||||
|
||||
# Путь к модулю
|
||||
terraform {
|
||||
source = "${get_terragrunt_dir()}/../../../modules//k8s-secret"
|
||||
}
|
||||
|
||||
# Входные переменные из конфига - модуль сам формирует data из зависимостей
|
||||
inputs = {
|
||||
# Передаем секреты как есть из infrastructure.yaml, модуль сам обработает type и dependencies
|
||||
secrets = [
|
||||
for secret in local.secrets : {
|
||||
name = secret.name
|
||||
namespace = dependency.namespace.outputs.name
|
||||
namespace = local.namespace_name
|
||||
secret_type = secret.type
|
||||
registry_url = try(secret.registry_url, "")
|
||||
dependencies = try(secret.dependencies, {})
|
||||
@ -137,39 +136,32 @@ inputs = {
|
||||
}
|
||||
]
|
||||
|
||||
# Зависимости от других модулей
|
||||
s3_outputs = {
|
||||
bucket_name = dependency.s3.outputs.bucket_name
|
||||
access_key = dependency.s3.outputs.access_key
|
||||
secret_key = dependency.s3.outputs.secret_key
|
||||
bucket_name = local.s3_bucket_name
|
||||
access_key = local.s3_access_key
|
||||
secret_key = local.s3_secret_key
|
||||
}
|
||||
|
||||
# Database outputs как map, ключ = "cluster_id:database_name:user_name"
|
||||
# Собираем все базы данных из infrastructure.yaml
|
||||
database_outputs_map = {
|
||||
# Текущая база из dependency
|
||||
"${local.env_config.databases[0].cluster_id}:${local.env_config.databases[0].database.name}:${local.env_config.databases[0].user.name}" = {
|
||||
host = dependency.database.outputs.host
|
||||
database_name = dependency.database.outputs.database_name
|
||||
user_name = dependency.database.outputs.user_name
|
||||
password = dependency.database.outputs.password
|
||||
host = local.db_host
|
||||
database_name = local.db_database_name
|
||||
user_name = local.db_user_name
|
||||
password = local.db_password
|
||||
}
|
||||
}
|
||||
|
||||
# Константы
|
||||
constants = {
|
||||
s3_endpoint = "https://storage.yandexcloud.net"
|
||||
postgres_port = "6432"
|
||||
postgres_ca = local.yc_postgresql_ca_cert
|
||||
}
|
||||
|
||||
# Environment variables
|
||||
env_vars = {
|
||||
DOCKER_REGISTRY_USERNAME = get_env("DOCKER_REGISTRY_USERNAME", "")
|
||||
DOCKER_REGISTRY_PASSWORD = get_env("DOCKER_REGISTRY_PASSWORD", "")
|
||||
}
|
||||
|
||||
# Провайдеры (передаются в сгенерированный provider.tf)
|
||||
yc_token = get_env("YC_TOKEN", "")
|
||||
yc_cloud_id = get_env("YC_CLOUD_ID", "")
|
||||
yc_folder_id = get_env("YC_STAGE_FOLDER_ID", get_env("YC_FOLDER_ID", ""))
|
||||
|
||||
@ -94,7 +94,7 @@ validate-${job_prefix}:
|
||||
- export TF_PLUGIN_CACHE_DIR=/root/.terraform.d/plugin-cache
|
||||
script:
|
||||
- env | grep -E "(S3_|AWS_)" || echo "No S3/AWS vars found"
|
||||
- terragrunt init -reconfigure
|
||||
- terragrunt init -upgrade -reconfigure
|
||||
- terragrunt validate
|
||||
rules:
|
||||
- if: '\$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
@ -128,7 +128,7 @@ plan-${job_prefix}:
|
||||
- ls -la
|
||||
- rm -rf .terragrunt-cache
|
||||
script:
|
||||
- terragrunt init -reconfigure
|
||||
- terragrunt init -upgrade -reconfigure
|
||||
- terragrunt plan -out=tfplan
|
||||
rules:
|
||||
- if: '\$CI_COMMIT_BRANCH == "master" || \$CI_COMMIT_BRANCH == "main"'
|
||||
@ -174,7 +174,7 @@ apply-${job_prefix}:
|
||||
- ls -la
|
||||
- rm -rf .terragrunt-cache
|
||||
script:
|
||||
- terragrunt init -reconfigure || true
|
||||
- terragrunt init -upgrade -reconfigure
|
||||
- terragrunt apply tfplan
|
||||
rules:
|
||||
- if: '\$CI_COMMIT_BRANCH == "master" || \$CI_COMMIT_BRANCH == "main"'
|
||||
|
||||
Loading…
Reference in New Issue
Block a user