Logo Lanfrica

mcherberty/cicd-terraform

Domain:

healthcare

Record type:

software
Creator:
mch
Host:
A peer-to-peer learning platform for local communities in Uganda, built on Village Health Teams (VHT) networks and Women Groups with automated CI/CD infrastructure using GitHub Actions and Terraform.aform # VHT Community Learning Platform - CI/CD Pipeline A peer-to-peer learning platform for local communities in Uganda, built on Village Health Teams (VHT) networks and Women Groups with automated CI/CD infrastructure using GitHub Actions and Terraform. **Author:** Charles Herbert Matovu **Created:** 2025 ## πŸ“‹ Project Overview This repository contains the Infrastructure as Code (IaC) configuration for the VHT Community Learning Platform. The project aims to: - Provide accessible peer-to-peer learning resources - Support Village Health Teams (VHT) networks - Empower Women Groups in Uganda - Deploy and manage cloud infrastructure automatically - Ensure consistent, reproducible deployments ## πŸ—οΈ Architecture ``` β”œβ”€β”€ main.tf # Core infrastructure resources β”œβ”€β”€ variables.tf # Input variables and validations β”œβ”€β”€ outputs.tf # Output values β”œβ”€β”€ backend.tf # Terraform backend configuration β”œβ”€β”€ terraform.tfvars.example # Example variable values β”œβ”€β”€ .github/ β”‚ └── workflows/ β”‚ β”œβ”€β”€ terraform-plan.yml # PR validation workflow β”‚ β”œβ”€β”€ terraform-apply.yml # Production deployment workflow β”‚ └── terraform-validate.yml # Code quality checks └── README.md ``` ## πŸš€ Quick Start ### Prerequisites - **Terraform** >= 1.0 - **Google Cloud Platform** (GCP) account with a project - **GitHub** repository with this code - **gcloud CLI** installed and authenticated ### Local Setup 1. **Clone the repository:** ```bash git clone github.com cd cicd-terraform ``` 2. **Create GCP Service Account:** ```bash gcloud iam service-accounts create terraform-sa \ --display-name="Terraform Service Account" gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:terraform-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.admin" ``` 3. **Setup Workload Identity Federation (GitHub):** ```bash gcloud iam service-accounts add-iam-policy-binding \ terr …