Module Discovery
Scans directory structure to find Terraform modules. Pattern-based detection with configurable depth (4-5 levels).
Learn more
Generate GitLab CI pipelines with dependency ordering for Terraform/OpenTofu monorepos
# Homebrew (macOS/Linux)
brew install edelwud/tap/terraci
# Go
go install github.com/edelwud/terraci/cmd/terraci@latest
# Docker
docker run --rm -v $(pwd):/workspace ghcr.io/edelwud/terraci:latest generate# Initialize config
terraci init
# Generate pipeline
terraci generate -o .gitlab-ci.yml
# Only changed modules
terraci generate --changed-only --base-ref main1. Discover modules from directory structure:
platform/prod/eu-central-1/
├── vpc/ → platform/prod/eu-central-1/vpc
├── eks/ → platform/prod/eu-central-1/eks
└── rds/ → platform/prod/eu-central-1/rds2. Extract dependencies from terraform_remote_state:
# eks/main.tf
data "terraform_remote_state" "vpc" {
backend = "s3"
config = {
key = "platform/prod/eu-central-1/vpc/terraform.tfstate"
}
}3. Build execution order:
Level 0: vpc (no dependencies)
Level 1: eks, rds (depend on vpc)4. Generate pipeline:
stages:
- plan-0
- apply-0
- plan-1
- apply-1
plan-vpc:
stage: plan-0
apply-vpc:
stage: apply-0
needs: [plan-vpc]
plan-eks:
stage: plan-1
needs: [apply-vpc]# .terraci.yaml
structure:
pattern: "{service}/{environment}/{region}/{module}"
gitlab:
image: hashicorp/terraform:1.6
plan_enabled: true
exclude:
- "*/test/*"