Provisioning and managing cloud resources can be a daunting task, but it doesn’t have to be. Azure started with the portal and ARM templates, but to say that those are clunky to work with would be an understatement. That’s why Bicep was invented. Once you master it, provisioning and managing infrastructure in Azure is an absolute breeze. That’s why in this 5-hour course, Cloud Architect Simon Wåhlin will teach you everything you need to know to leverage Bicep and manage your resources as big enterprise companies with thousands of resources do.
What You'll Learn
Course Curriculum
4h 13m12 sections
Welcome
01:27Free preview
What will you learn in this course?
00:39Free preview
Who is this course for and prerequisites
01:02Free preview
Introduction
00:51
Example of manual deployment in Azure Portal
02:56
Challenges with manual deployment
01:22
Why use Infrastructure as Code
00:43
What is Infrastructure as Code
01:43
Infrastructure as Code options for Azure
01:58
Example Bicep template
01:53
Setup developer environment intro
01:59
Setup Visual Studio Code
02:41
Install Azure CLI
00:52
Install Azure PowerShell modules
01:42
Install Bicep CLI
01:51
Creating your first deployment
04:11
Resource syntax
04:13
Parameters introduction
03:26
Output introduction
02:32
Summary
00:46
Deploying with parameters
01:07
Parameter decorators
01:58
Example Log Analytics Workspace
03:13
Example Container App Environment
07:34
Summary
00:19
Deploy with Visual Studio Code
04:17
What-If deployments in Visual Studio Code
02:23
Deploy with Azure CLI
02:13
Deploy with Azure PowerShell
03:38
What-If deployments with Azure CLI
01:24
What-If deployment with Azure PowerShell
01:10
Deployment Mode Introduction
01:07
Using Deployment Mode Complete
01:47
Scenario Intro - Deploy Container App
01:00
Float type workaround
01:33
The need for complex objects as parameters
01:20
Using generic object as parameter
00:39
Creating custom types
05:31
Generating custom types from existing schema
02:52
Resource derived types
02:26
Implementing Custom Types for Container App Environment
04:46
Using Modules
03:58
Share symbols between modules
01:43
Import all symbols from a template
01:06
Import specific symbols from a template
02:52
Summary
02:18
String interpolation
02:01
Introducing Functions
09:27
String manipulation
04:32
Referencing existing resources
05:58
Introducing User Defined Functions
03:29
Sharing User Defined Functions between modules
01:14
Getting keys from existing resources
01:52
Introducing Tagged Union Data type
03:24
Using the Lambda Function Reduce
04:19
Ternary operators as if statements
01:33
Safe dereference operator
01:00
Coalesce operator
00:48
Spread operator
02:24
Test and validate lambda functionality
04:20
Testing expressions using Bicep Console command
02:20
Lambda function Filter example
01:22
Failing early using the Fail function
02:03
Parameter files
04:31
Introduction
02:34
Built-in RBAC roles
02:05
Assinging RBAC roles using for loop
08:12
Example assign roles to pre-created identities
03:08
Example assign roles to new service principals
02:59
Summary Role assignments
01:25
Introducing Deployment Scripts
01:24
Implementing Azure CLI Deployment Script
07:17
Deployment Script with Managed Identity support
03:44
User assigned Managed Identity
03:45
Adding new modules to the solution template
09:31
Creating the container build script
06:27
Summary
00:30
Intro to improving Managed Identity Support
00:25
Create new Managed Identity types
04:37
User Defined Function to determine type of Managed Identity
05:06
User Defined Function to create and merge objects
06:38
Combining User Defined Functions
02:20
Alternative implementation to reduce ARM template size
03:41
Import new functions in our templates
03:15
Implementing support for custom Container Registry
Simon Wåhlin is a consultant at Unwonted in Stockholm, Sweden and has a focus on Azure, PowerShell and automation. He helps customers with both strategy, design and implementation of modern infrastructure solutions.
He also teaches PowerShell and Azure as an MCT, hosts user group meetings, blogs and talks at conferences. With a background in IT-support and IT-operations and a strong interest for development he is trying to find his place in the gap between Dev and Ops.