We made it through Q1. If you’ve been following along since August, you’ve gone from “what is Infrastructure as Code?” to deploying Azure resources with Terraform. That’s real progress.
This post is a chance to step back, review what we’ve learned, and make sure the foundation is solid before we build on it in Q2.
What We Covered
August: Getting Started
- Welcome to Pipelines and Pizza
- The DevOps Career Path
- Terraform vs. PowerShell vs. Ansible
- Git Basics
- Cloud Strategy
- Favorite Tools for DevOps
- Git Branching Strategies
September - October: Automation Fundamentals
- Ansible for Beginners
- Ansible Patching
- Infrastructure as Code
- Managing Nutanix with Terraform
November - December: Terraform & Azure
- Terraform Basics
- Terraform Variables and Outputs
- Azure for DevOps Engineers
- Connecting Terraform to Azure
The Skills You’ve Built
Git & Version Control
- Cloning, branching, committing, and merging
- Understanding trunk-based development vs. feature branches
- Writing meaningful commit messages
Ansible
- Writing basic playbooks with tasks and handlers
- Using variables, templates, and inventory files
- Understanding idempotency
Terraform Fundamentals
- Writing HCL with resources, variables, and outputs
- Understanding providers and state management
- Using
terraform init,plan,apply, anddestroy
Azure Basics
- Understanding the hierarchy: Tenant → Management Groups → Subscriptions → Resource Groups
- Knowing the core services
- Connecting Terraform to Azure with service principals
Key Takeaways
1. Declarative > Imperative (Usually)
Terraform’s declarative approach beats step-by-step scripting for infrastructure.
2. State is Everything in Terraform
terraform {
backend "azurerm" {
resource_group_name = "rg-terraform-state"
storage_account_name = "stterraformstate001"
container_name = "tfstate"
key = "prod/terraform.tfstate"
}
}
3. Variables Make Code Reusable
resource "azurerm_resource_group" "main" {
name = "rg-${var.app_name}-${var.environment}-${var.location}"
location = var.location
tags = local.common_tags
}
4. The Cloud Adoption Framework is Your Friend
Don’t reinvent the wheel. Microsoft’s CAF provides proven patterns.
5. Git is Non-Negotiable
Every piece of infrastructure code belongs in version control.
Looking Ahead to Q2
Q2 is Automation & IaC Mastery:
January
- Advanced Git
- Ansible Vault
- Terraform Modules
- Deploying Azure Resources
February
- Nutanix for DevOps Engineers
- Automating Nutanix with Ansible
- CI/CD for Infrastructure
- Terraform in CI/CD Pipelines
March
- Ansible in CI/CD Pipelines
- Testing Infrastructure Code
- Full Pipeline Integration
- Q2 Recap
Resources to Keep Handy
- Terraform Documentation
- AzureRM Provider
- Ansible Documentation
- Azure Documentation
- Cloud Adoption Framework
Final Thoughts
Q1 was about building the foundation. You now have:
- Version control skills to manage code properly
- Ansible knowledge to automate configuration
- Terraform fundamentals to define infrastructure as code
- Azure understanding to work with a major cloud platform
Take a moment to appreciate how far you’ve come. Then get ready, because Q2 is where things get really interesting.
See you in January.
Happy holidays, and happy automating!