
Learn how infrastructure as code enables reproducible, automated Azure deployments via Azure DevOps, CI/CD pipelines, and Bicep, translating ARM JSON templates into simpler, maintainable code.
Learn to register a free Microsoft Azure account, get 12 months plus about 200 USD credit, sign up with a Microsoft email, verify mobile, and complete card verification.
Create an Azure DevOps organization, set up a private project named Project Daybreak, and create a dedicated repository for provisioning resource groups with Azure Pipelines for infrastructure deployment.
Install the Azure CLI across Windows, Linux, Mac, or Docker, run az commands in PowerShell or Bash, verify the version, and sign in to your Azure tenant with az login.
Install the Bicep language via the CLI in Windows PowerShell, verify the installation with bicep --version, and note version 0.12.40 as you prepare to code infrastructure as code.
Install Git Bash on Windows to enable a Bash terminal for Git versioning and Unix-like syntax; verify installation by running git --version and prepare to install Visual Studio Code.
Install Visual Studio Code on Windows to use as your code editor for infrastructure as code and Git Bash, covering download, installer steps, license, desktop icon, and launch.
Install bicep, ARM, PowerShell, and YAML extensions in Visual Studio Code to enable validation and IntelliSense, reducing errors when authoring Azure infrastructure as code.
Set Git Bash as the default terminal in VS Code by using the command palette to select the default profile, test with a new terminal, and optionally switch to PowerShell.
Explore Git, a distributed version control system that clones from a master repository, supports local branching, commits, pushes, and merges, and enables offline work, history tracking, and collaboration.
Create a local git repository by making a project directory, navigating into it with git bash, and initializing with git init to version-control your code.
Stage and commit changes in git by creating a demo file with echo, adding it with git add, and committing with a message, after configuring user name and email.
Stage and commit multiple files in git using the same commands shown, including git add ., git status, and git commit -m 'message' to capture grouped changes.
Modify files, stage changes, and commit them to the master repository using git add and git commit, then review changes with git status and git log.
Create and switch to a new local git branch to isolate changes from master, then plan to merge once testing is complete.
Modify an existing file, stage the changes, and commit them in a new branch based on master, then verify the changes and review the git history.
Demonstrates merging a pr test branch into the master branch, verifies branch isolation, and confirms the merge by adding a new file (demo eight.txt) and performing a git merge.
Learn to manage Git workflows in Visual Studio Code by creating a new branch, staging and committing changes, viewing untracked files, and merging the branch back into master.
Explore viewing a past state with git as a time machine. Use git log --oneline and git checkout <hash> to inspect history and revert changes.
Learn to undo the latest commit by using git revert, view the head revision with git log, stage and commit changes in VS Code, and understand potential merge conflicts.
Learn practical git time travel techniques by performing log checks, soft resets, and hard resets to manage changes across commits, including checkout, unstaged, and untracked files.
Set up billing in Azure DevOps to run Azure Pipelines and test a Microsoft hosted runtime agent, exploring free minutes, paid parallel jobs, and self-hosted options.
Install the latest .NET framework and .NET 6 SDK, then download the .NET Core 3.1 SDK to set up a self-hosted runtime agent for Azure DevOps pipelines.
Install PowerShell 7 to support Azure libraries and pipelines, download the 64-bit installer, run the setup, and finish the installation before the next lecture on Visual Studio 2022.
Install Visual Studio 2022 Community Edition to access ASP.NET Web and Development and Azure development libraries, enabling you to create Azure resources, deploy web applications, and configure a self-hosted agent.
Create a personal access token (pat) in Azure DevOps, grant full access for 90 days, securely store it, and use it to configure a self hosted agent for pipelines.
download and configure a self hosted runtime agent in the default Azure DevOps pool, including downloading the 64-bit Windows agent and configuring it with a personal access token.
Test a self hosted agent by running a pipeline in Azure DevOps, selecting the default pool, and confirming the live log shows the agent connects and the job starts.
Configure a service connection in Azure DevOps to authenticate pipelines against Microsoft Azure, automatically creating a service principal linked to an Azure subscription.
Clone your existing repository to your local machine and open it in Visual Studio Code to begin writing infrastructure as code. Follow git clone steps and authenticate with your credentials.
Create a clean project structure by organizing code into pipelines and scripts folders, initializing a feature branch, and adding YAML pipelines and PowerShell scripts for resource group deployment.
Create a PowerShell script to provision a single resource group with parameterized location, resource group name, and tags, then deploy and log results within a try-catch for robust error handling.
Define a multi-stage Azure DevOps pipeline by adding a stage and a job to the YAML, configure trigger, pool, and display names, and outline steps to run a PowerShell script.
Add a PowerShell task to an Azure DevOps yaml pipeline, configure the Azure PowerShell task, point to the script, pass arguments, and deploy a resource group in North Europe.
Validate the deployed resource group in the Azure portal and confirm provisioning with PowerShell and YAML pipeline, then merge changes to main and prepare for Bicep.
Create a new Azure DevOps repository to provision infrastructure and log analytics for the PDP infrastructure. Build clean project structures with directories and files to organize code and artifacts.
Create a repository for provisioning infrastructure by navigating to the repositories, selecting new repository, and naming it pdB infrastructure, then prepare to clone and create a git branch.
Clone the repository to your local computer and create a working git branch for provisioning log analytics, using the clone url and git clone to begin.
Set up infra and log analytics folders, create main and module Bicep files, add a YAML pipeline for provisioning, and include a scripts folder to compile Bicep to ARM.
Develop a reusable log analytics bicep module and modify the main bicep file to deploy log analytics resources across multiple resource groups using infrastructure as code.
Learn the specification for a log analytics bicep module template, including required and optional inputs, properties like name, location, tags, sku, log retention, and security settings for public network access.
Declare and annotate input parameters in the Log Analytics Bicep template, including tags, location, workspace name, and retention in days, skew, plus public network access for ingestion and query.
Develop a log analytics bicep module template using the rest api 2021 1201 Preview for Microsoft operational insights, and expose outputs for the workspace name and id.
Develop the main bicep file for log analytics by defining input sets for tagging, resource naming, and log analytics module parameters, then invoke the log analytics module template.
Learn to add tagging and resource naming variables in an Azure Bicep file, creating a tag object from owner, cost center, application, description, repository, and naming parameters for log analytics.
Add parameter variables for the log analytics module and set a naming standard, copying module parameters and defining defaults from the resource group location.
Declare and invoke the Log Analytics Bicep module with a unique deployment name, supplying tags, location, workspace name, retention days, network access for ingestion and query, and skew.
Learn to transpile Bicep to ARM by building a reusable PowerShell utility that uses the CLI to convert declarative Bicep code into ARM templates.
Outline a plan to transpile BICEP to an ARM JSON template using inputs: file path, bicep file, template path, and output name, keeping the latest BICEP library.
Develop a PowerShell script to transpile a Bicep template into an ARM JSON template, with parameters, try-catch error handling, and debugging output for automation.
Create a yaml pipeline to provision infrastructure, using an Azure DevOps variable group and Bicep templates to drive log analytics provisioning and review deployment audit logs in the Azure portal.
Plan a yaml pipeline to provision Azure infrastructure and log analytics, using a variable group, a service connection, and environment indicators, with stages, jobs, and steps.
Create an Azure DevOps variable group in project DAYBREAK, defining variables like application, company short name, cost center, domain, owner, and repository URL to bootstrap a YAML pipeline.
Learn to build a yaml pipeline to provision infrastructure by adding a trigger, parameters, and variables, including a variable group, a service connection, and values as dev, test, and prot.
Learn to extend an Azure DevOps pipeline by adding a stage to provision log analytics and a job to compile Bicep to an ARM template in JSON.
Build a yaml pipeline to provision infrastructure with Azure Resource Manager deployment task for ARM templates from bicep. Configure deployment scope, resource group, environment, and override parameters via runtime variables.
Push the feature branch to the remote, load the Azure DevOps pipeline from YAML, and run it in dev to validate infrastructure deployment while troubleshooting variable resolution and fixes.
Confirm the deployment by checking portal.azure.com for the log analytics resource and deployment status, then merge the working branch into main via a pull request.
Create a deliberate error in Azure DevOps by branching, misspelling a resource group name, and pushing changes to observe pipeline behavior and error detection.
Launch a DevOps pipeline to provision resource groups, trigger a deliberate PowerShell error, and read the try-catch output to fix a null or empty argument in the pipeline.
Learn to revert an intentional error with git revert, edit the commit message in Visual Studio Code, push the fix, and set up a template error for the next lecture.
Identify and fix indentation problems in YAML pipelines, resolving nested mappings and implicit keys errors, and locate the affected line using Visual Studio Code or DevOps execution feedback.
Create a data factory bicep module and main file to provision the data factory with log analytics, while outlining ETL orchestration and pipeline logging in a data platform.
Define a data factory Bicep module template by specifying required inputs—tags, location, and data factory name—with log analytics as a recommended dependency for monitoring logs.
Create the data factory bicep module by setting up the required files and directories, including modules/data factory and infra/data factory, plus a data factory bicep template and main.bicep.
Create the data factory bicep template module by adding input parameters—tags, location, data factory name, and workspace ID—and prepare for log analytics in the next lecture.
Add a log analytics dependency by linking the data factory to a dedicated log analytics workspace, with activity, pipeline, and trigger run categories.
Create the main bicep file to invoke the data factory module, enforce tagging and naming standards, validate the log analytics workspace existence, and pass the workspace ID to provision the data factory.
The goal of this course is to help students learn how to professionally write and develop Azure DevOps Infrastructure as Code with BICEP, YAML, Git and PowerShell.
Azure DevOps is a leading automation and DevOps platform and the students will be taken through the following;
An in-depth introduction to Infrastructure as Code with the Azure DevOps platform
A definition of DevOps and how Azure as a SaaS (Software as a Service) platform that facilitates the practice of the DevOps methodology
An Introduction to YAML pipelines on the Azure DevOps platform
An Introduction to BICEP and ARM templates for developing Infrastructure as Code (IaC) on the Azure DevOps Platform
An overview of Industry leading DevOps tools
Git is an industry leading distributed version control system and is a very critical component of Azure DevOps and therefore students will be taken through a Git Crash Course that covers the following basic aspects;
The creation of a local Git Repository
Learn how to stage and commit single and multiple files
Branching management with Git including Merging
Git with Bash and Visual Studio Code
Learn how to time travel and undo changes
Students may find it necessary to learn about how to set up Azure DevOps Pipeline Agents as a Self-Hosted Azure DevOps agents for running CI / CD pipelines, perhaps the situation could be cost saving at a work environment or a cost effective personal environment, and therefore the students will learn the following;
Set up Billing for Microsoft and Self Hosted pipeline agents
Installation and Set Up for a Self Hosted pipeline agents
Setting up of a Personal Access Token
Configuration of a Self-Hosted Agent
YAML is a leading configuration management technology for developing CI / CD pipelines, perhaps the best way learn how to write YAML pipelines is for the student to be taken through how to provision infrastructure with YAML, Powershell and BICEP. The initial focus will be the provisioning of resource group and there and therefore the students will learn the following;
How to Create an Azure Service Connection
Cloning an Azure DevOps Repository
Writing PowerShell Script to Provision a Resource Group
How to Add Stages, Jobs and Steps in a YAML pipeline template
Running the YAML pipeline on Azure DevOps
How to develop Azure Variables Group and pass them into YAML templates
How to override BICEP parameters using YAML
One aspect of professionalism in coding is how projects are structured for coding efficiency and ease of management, the other aspect in the naming convention of resources. The course will take through students on the following following.
Creating Project Structures for a DevOps and BICEP project using Bash and Git
Establish a standard naming convention for resources using BICEP and PowerShell
The heart of provisioning and deploying infrastructure in Azure is the adoption of BICEP, and students will learn the following in terms of developing BICEP in a professional manner;
Development of a BICEP template to provision Log Analytics and Data Factory
How to add Input Parameters to a BICEP template
How to create BICEP Modules for Log Analytics and Data Factory
How to add Tagging Information to BICEP modules
How to structure a naming convention with BICEP
How to use run time and compile time variables and parameters
How to write a PowerShell Script to Transpile BICEP to an ARM template
How to Manage Dependencies between Resources with BICEP
How manage BICEP template errors