Skip to content
Pipelines and Pizza 🍕
Go back

Q1 Recap: Building the DevOps Foundation

3 min read

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, and destroy

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


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!