# Terraform vSphere Resource Groups Module This Terraform module manages vSphere resource pools (resource groups) with CPU/memory allocation controls and integrated tagging for organization and management. ## Purpose Creates and manages vSphere resource pools with configurable resource allocation policies, reservations, limits, and shares. Includes automated tagging for environment and resource group classification. ## What It Does 1. Creates resource pools under vSphere cluster 2. Configures CPU reservations, limits, and shares 3. Configures memory reservations, limits, and shares 4. Creates tag categories for Environment and ResourceGroupType 5. Applies tags to resource pools for organization ## Usage ```hcl module "vsphere_resource_groups" { source = "./terraform-vsphere-resourcegroups" datacenter = "DC1" cluster_name = "Cluster01" environment = "prod" role_id = var.vault_role_id secret_id = var.vault_secret_id resource_groups = { kubernetes = { name = "Kubernetes" cpu_reservation = 4000 cpu_shares = "high" memory_reservation = 8192 memory_shares = "high" } docker = { name = "Docker" cpu_shares = "normal" memory_shares = "normal" } infra = { name = "Infrastructure" cpu_shares = "low" memory_shares = "low" } } } ``` ## Key Features - **Resource Allocation**: CPU and memory reservations, limits, shares - **Shares Mapping**: Automatic conversion of low/normal/high to vSphere values (500/1000/2000) - **Tagging System**: Environment and resource group type tags - **Flexible Configuration**: Optional parameters with sensible defaults - **Expandable Resources**: Allow resources to grow beyond reservations ## Default Resource Groups - **Kubernetes**: For Kubernetes infrastructure - **Docker**: For Docker containers - **Infra**: For infrastructure services ## Prerequisites - VMware vSphere with compute cluster - Vault with vSphere credentials - Terraform >= 0.13