Infrastructure as Code (IaC) is the practice of defining, provisioning, and managing computing infrastructure โ servers, networks, databases, load balancers, security groups โ using code and configuration files rather than manual processes, point-and-click UIs, or ad hoc scripts. Infrastructure definitions are stored in version control (Git), reviewed like software, and applied in an automated, repeatable manner.
Why IaC matters
Manual infrastructure management has three fundamental problems: it is error-prone (humans make mistakes, especially under pressure), it is not auditable (who changed what, when, and why is often unknown), and it is not reproducible (recreating an environment from scratch is difficult and inconsistent). IaC addresses all three: code is precise, Git commits are auditable, and code can be applied identically to any number of environments.
IaC vs. configuration management vs. GitOps
IaC typically refers to provisioning infrastructure โ creating resources (Terraform, Pulumi, CloudFormation). Configuration management (Ansible, Chef, Puppet) refers to configuring existing servers. GitOps is an operational model that applies IaC principles specifically to Kubernetes and cloud-native environments, using a Git repository as the control plane and an agent that continuously reconciles live state to declared state. These are complementary: in a mature platform, IaC provisions the underlying infrastructure, and GitOps manages the application and platform layer running on it.
IaC in regulated environments
For RBI, SEBI, and NCIIPC compliance, IaC is not just a best practice โ it is effectively mandatory. Change management requirements specify that all production changes must be documented, approved, tested, and auditable. A manual change made directly on a production server cannot satisfy these requirements. An IaC commit in Git โ with an associated PR, reviewer approval, automated tests, and deployment log โ satisfies all of them.
