$ account terraform-google-modules
This is a Terraform module, published on the Terraform Registry as `terraform-google-modules/project-factory/google`, that automates the creation and configuration of Google Cloud Platform (GCP) projects. It follows a modular architecture with a root module orchestrating several submodules such as `core_project_factory`, `project_services`, `shared_vpc_access`, `budget`, `quota_manager`, `essential_contacts`, `gsuite_enabled`, and `svpc_service_project`. The module handles project creation, billing association, IAM policy management, Shared VPC attachment, API enablement with service identities, budget alerts, consumer quota overrides, essential contacts, and G Suite group integration (via the third-party `DeviaVir/gsuite` provider). Entry points are the root `main.tf` and the submodule directories; usage is through standard Terraform workflow (`terraform init`, `plan`, `apply`). External dependencies include the `hashicorp/google`, `hashicorp/google-beta`, and optionally `DeviaVir/gsuite` Terraform providers. The repository also provides helper scripts for seed service account setup (`helpers/setup-sa.sh`), state migration (`helpers/migrate.py`, `helpers/migrate4.py`), and prerequisite validation (`helpers/preconditions/preconditions.py`). The codebase is well-structured with extensive use of locals, `for_each` loops, and separation of concerns, making individual submodules reusable across different projects. Despite being infrastructure-as-code, it exhibits strong software engineering practices including semantic versioning, automated testing (Go, InSpec, Python), and CI/CD pipelines.
This is a comprehensive Terraform module library for provisioning Google Cloud networking infrastructure. It provides building blocks for VPCs, subnets, routes, firewall rules (classic and policy-based), network peering, Private Service Connect (consumer, producer, endpoints), Network Connectivity Center hubs/spokes, and higher-level foundation patterns (shared VPC, hub-and-spoke). The architecture is modular: the root module orchestrates core resources while 30+ submodules handle specific concerns (e.g., firewall-rules, subnets-beta, network-firewall-policy). Each submodule has its own variables, outputs, and version constraints, making them independently consumable. Extensive integration tests in Go (using cloud-foundation-toolkit) validate correct behavior against real GCP projects. The module is actively maintained with frequent releases (v18.3.0) and follows Google Cloud Foundation Toolkit conventions, but exhibits some technical drift: deprecated variables remain, beta submodules may lag behind GA, and many examples pin older Terraform/provider versions.
This repository provides Terraform modules for managing Google Cloud SQL instances (MySQL, PostgreSQL, SQL Server) with features including backups, high availability, private networking, IAM authentication, and encryption. It follows a modular architecture where each database type and supporting feature (backup, restore, private service access) is implemented as a separate, reusable Terraform module. The root module is deprecated in favor of direct use of the submodules. Key entry points are the module directories (modules/mysql, modules/postgresql, etc.) and the examples directory which contains ready-to-run configurations for common deployment patterns. The system automates database lifecycle management through infrastructure-as-code, integrating with Google Cloud services like Cloud Workflows for backup scheduling, KMS for encryption, and Service Networking for private access. While the modules are well-maintained with frequent updates and comprehensive documentation, they exhibit tight coupling to Google Cloud-specific services and Terraform provider versions, limiting portability outside the GCP ecosystem.
This is a Terraform module for deploying a production-grade HashiCorp Vault cluster on Google Compute Engine (GCE). It provisions all necessary networking (VPC, subnets, NAT, firewalls), a GCS bucket for Vault's storage backend, a KMS key for auto-unseal and TLS encryption, and manages the full lifecycle of Vault nodes via a managed instance group with autoscaling and autohealing. The module supports both internal and external load balancers, and includes an optional submodule (`modules/cluster`) for organizations that need to separate concerns (e.g., shared VPC setups). The core logic resides in the `modules/cluster` submodule, which contains instance templates, load balancer configuration, health checks, IAM bindings, and self-signed TLS certificate generation. A startup script template handles Vault installation, configuration, mTLS setup, logging agents, and security hardening (core dumps disabled, swap disabled, unprivileged user). The module is highly parameterized with ~60 input variables, allowing customization of machine types, Vault versions, networking, and TLS management. It is designed for high availability (HA) with GCS backend and auto-unseal via Cloud KMS. The repository includes examples, integration tests using Kitchen/Terraform and Inspec, and CI/CD pipelines, indicating a mature, community-maintained module. The code is clean and follows Google's Cloud Foundation Toolkit conventions, but it is relatively conventional Terraform infrastructure code, not particularly novel or reusable beyond its intended purpose.