Introduction
Infrastructure as Code (IaC) has become the backbone of modern cloud architectures. Terraform, combined with Azure services, enables us to build scalable, secure, and reproducible platforms.
In this blog series, I’m starting from a real Terraform project that I initially built by hand, without AI assistance. This first part focuses on laying a solid foundation: a production-oriented Azure container infrastructure.
In the next parts, things get more interesting 🚀
We’ll enhance this infrastructure using GitHub Copilot, exploring:
- Chat mode
- Custom instructions
- Prompt-driven infrastructure evolution
This repository will be open-source, and anyone is welcome to contribute, learn, or suggest improvements.
🎯 Goal of This Series
This series has three main objectives:
- Build a real-world Azure container architecture
- Demonstrate Terraform best practices incrementally
- Show how GitHub Copilot can assist cloud engineers in evolving infrastructure
Each article will introduce one logical improvement, keeping things practical and easy to follow.
🏗️ Architecture – What We’re Building (Part 1)
In this first iteration, we deploy a public-facing containerized application with secure networking and observability.
Core Components
The current Terraform setup includes:
- Azure Application Gateway (Public)
- Acts as the entry point
- Handles HTTP/HTTPS traffic
- Azure Container Apps Environment
- Azure Container App
- Hosts the main application
- Azure Log Analytics Workspace
- Centralized logs and diagnostics
- Virtual Network (VNet)
- Network Security Groups (NSGs)
- Network-level security controls
- Private DNS Zone
- Internal name resolution between services



This design already follows production-grade principles:
- Network isolation
- Centralized logging
- Clear separation of responsibilities
🧱 Why Start Without Copilot?
For this first blog post, everything was written manually.
Why?
Because before using AI effectively, it’s important to:
- Understand the architecture
- Control the Terraform structure
- Define clear boundaries and responsibilities
This baseline will allow us to objectively measure Copilot’s value in the next parts:
- Does it accelerate development?
- Does it suggest better patterns?
- Does it catch errors or improve readability?
🔜 What’s Coming Next
In Part 2, we’ll enhance this platform by:
- Adding Azure Container Registry (ACR)
- Introducing a second Container App acting as a backend API
- Connecting frontend ↔ backend securely
- Using GitHub Copilot Chat to guide Terraform changes
Later parts will include:
- Copilot custom instructions
- Prompt files
- Security improvements
- CI/CD with GitHub Actions
- Community-driven enhancements
🤝 Open Source & Contributions
This project is 100% open-source.
If you want to:
- Learn Terraform on Azure
- Experiment with GitHub Copilot
- Contribute improvements or ideas
Url : achrafbenalaya/azure-workshop-aca
You’re more than welcome to join.
📌 Conclusion
This first part sets the foundation: a clean, functional Azure container platform built with Terraform.
From here on, we’ll iterate, enhance, and challenge our own work, with GitHub Copilot as a real teammate not a magic button.
Stay tuned for Part 2, where AI enters the game 🤖☁️





















