Infrastructure as Code
SKILL.md
Purpose
Define infrastructure as version-controlled code, enabling reproducible environments and automated provisioning.
When to Use
- Provisioning cloud resources
- Creating development environments
- Managing infrastructure changes
- Disaster recovery planning
Key Capabilities
- Declarative Infrastructure - Define desired state in code
- Container Configuration - Create Docker images and configurations
- State Management - Track infrastructure state and changes
Approach
- Choose appropriate tool (Terraform, Docker, K8s)
- Define resources declaratively
- Use modules for reusability
- Version control infrastructure code
- Apply infrastructure changes safely
Example
# Terraform example
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t3.medium"
tags = {
Name = "web-server"
Environment = "production"
}
}
# Docker example
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
Best Practices
- ✅ Version control all infrastructure code
- ✅ Use modules for reusability
- ✅ Implement least privilege access
- ✅ Tag resources for cost tracking
- ❌ Avoid: Manual infrastructure changes
- ❌ Avoid: Hardcoding credentials