This project uses Terragrunt to manage the infrastructure when have multi-environments.
Terraform v1.3.2, Terragrunt v0.38.12
terragrunt-live/<environment>
: Contains theTerragrunt
configs.terragrunt-module/<environment>
: Contains the environment-specificTerragrunt
configs and Terraform modules for that environment (gcp, vmware).
All configuration for this project is stored in the .hcl
files in each environment directory. Modify these files to suit your needs.
Terragrunt have same commands as terraform
# terragrunt/terragrunt-live
terragrunt run-all apply --terragrunt-working-dir ./dev/gcp
# terragrunt/terragrunt-live/dev/gcp
terragrunt run-all destroy --terragrunt-ignore-dependency-errors
terragrunt plan
terragrunt apply
terragrunt destroy
terragrunt output -json
arpo@ubuntu:~/PROJECT/terragrunt-live$ tree
.
├── dev
│ ├── env.hcl
│ ├── gcp
│ │ ├── account.hcl
│ │ ├── _common
│ │ │ ├── _env.hcl
│ │ │ ├── k8s_cluster_provider.hcl
│ │ │ ├── kubernetes_provider.hcl
│ │ │ └── network_dependency.hcl
│ │ ├── credential.json
│ │ ├── k8s
│ │ │ └── terragrunt.hcl
│ │ ├── k8s-resource
│ │ │ ├── cluster.hcl
│ │ │ ├── config
│ │ │ │ └── terragrunt.hcl
│ │ │ ├── core
│ │ │ │ └── terragrunt.hcl
│ │ │ ├── datastore
│ │ │ │ └── terragrunt.hcl
│ │ │ ├── devops-tools
│ │ │ │ └── terragrunt.hcl
│ │ │ └── monitoring
│ │ │ └── terragrunt.hcl
│ │ └── network
│ │ └── terragrunt.hcl
│ └── vmware
│ ├── account.hcl
│ ├── _common
│ │ ├── _env.hcl
│ │ ├── k8s_cluster_provider.hcl
│ │ ├── kubernetes_provider.hcl
│ │ └── vm_dependency.hcl
│ ├── k8s
│ │ └── terragrunt.hcl
│ ├── k8s-resource
│ │ ├── cluster.hcl
│ │ ├── config
│ │ │ └── terragrunt.hcl
│ │ ├── core
│ │ │ └── terragrunt.hcl
│ │ ├── datastore
│ │ │ └── terragrunt.hcl
│ │ ├── devops-tools
│ │ │ └── terragrunt.hcl
│ │ └── monitoring
│ │ └── terragrunt.hcl
│ └── vm
│ └── terragrunt.hcl
├── prd
│ └── README.md
└── terragrunt.hcl
arpo@ubuntu:~/PROJECT/terragrunt-modules$ tree -L 4
.
├── gcp
│ ├── k8s
│ │ ├── google-gke.tf
│ │ ├── outputs.tf
│ │ └── variables.tf
│ └── network
│ ├── google-firewall.tf
│ ├── google-router.tf
│ ├── google-vpc.tf
│ ├── outputs.tf
│ └── variables.tf
├── k8s-resource
│ ├── config
│ │ ├── config.tf
│ │ ├── module
│ │ │ ├── harbor
│ │ │ └── keycloak
│ │ ├── outputs.tf
│ │ ├── provider.tf
│ │ ├── sonarqube.tf
│ │ ├── values
│ │ │ └── sonarqube-values.yaml
│ │ └── variables.tf
│ ├── core
│ │ ├── certificate.tf
│ │ ├── cloudflare.tf
│ │ ├── ingress-nginx.tf
│ │ ├── kubed.tf
│ │ ├── metrics-server.tf
│ │ ├── namespace.tf
│ │ ├── nfs-client.tf
│ │ ├── outputs.tf
│ │ ├── provider.tf
│ │ ├── values
│ │ │ └── metrics-server-values.yaml
│ │ └── variables.tf
│ ├── datastore
│ │ ├── minio.tf
│ │ ├── namespace.tf
│ │ ├── outputs.tf
│ │ ├── postgresql.tf
│ │ ├── provider.tf
│ │ ├── rabbitmq.tf
│ │ ├── random_password.tf
│ │ ├── redis.tf
│ │ ├── values
│ │ │ ├── minio-values.yaml
│ │ │ ├── postgresql-values.yaml
│ │ │ ├── rabbitmq-values.yaml
│ │ │ └── redis-values.yaml
│ │ └── variables.tf
│ ├── devops-tools
│ │ ├── harbor.tf
│ │ ├── keycloak.tf
│ │ ├── keycloak_theme.tf
│ │ ├── namespace.tf
│ │ ├── outputs.tf
│ │ ├── provider.tf
│ │ ├── random_password.tf
│ │ ├── sonarqube_password.tf
│ │ ├── values
│ │ │ ├── harbor-values.yaml
│ │ │ └── keycloak-values.yaml
│ │ └── variables.tf
│ └── monitoring
│ ├── fluentbit.tf
│ ├── grafana.tf
│ ├── namespace.tf
│ ├── opensearch-dashboard.tf
│ ├── opensearch.tf
│ ├── opensearch_tls.tf
│ ├── outputs.tf
│ ├── prometheus-exporter.tf
│ ├── prometheus.tf
│ ├── provider.tf
│ ├── random_password.tf
│ ├── values
│ │ ├── fluentbit-values.yaml
│ │ ├── grafana-values.yaml
│ │ ├── opensearch-dashboard-values.yaml
│ │ ├── opensearch-values.yaml
│ │ ├── prometheus-blackbox-exporter-values.yaml
│ │ ├── prometheus-elasticsearch-exporter-values.yaml
│ │ ├── prometheus-postgresql-exporter-values.yaml
│ │ ├── prometheus-rabbitmq-exporter-values.yaml
│ │ ├── prometheus-redis-exporter-values.yaml
│ │ └── prometheus-values.yaml
│ └── variables.tf
└── vmware
├── k8s
│ ├── create-cluster.tf
│ ├── kubespray
│ ├── outputs.tf
│ ├── script.sh
│ ├── templates
│ │ ├── helm-values-nfs.yml.tftpl
│ │ ├── kubespray-all.yml.tftpl
│ │ ├── kubespray-inventory.ini.tftpl
│ │ └── kubespray-k8s-cluster.yml.tftpl
│ └── variables.tf
└── vm
├── data-sources.tf
├── output.tf
├── provider.tf
├── templates
│ ├── user-data-fedoraCoreOS-node.fcc
│ ├── user-data-ubuntu-master-lb.yaml
│ ├── user-data-ubuntu-storage.yaml
│ └── user-data-ubuntu-worker-lb.yaml
├── variables.tf
├── vm_config.tf
└── vm_generate.tf