Infrastructure as CodeIntermediate20 submodules

ARM Templates and Bicep

Deploy Azure resources through native ARM JSON and Bicep declarations with parameters, variables, functions, dependencies, modules, loops, conditions, outputs, and controlled deployment modes.

From concept to production evidence

Use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Learning outcomes

  • Explain ARM control-plane deployment
  • Read and author ARM JSON
  • Create Bicep resources and modules
  • Use parameters, loops, conditions, functions, dependencies, and outputs
  • Choose deployment scope and mode safely

ARM Templates and Bicep end-to-end flow

Use this sequence as the operating backbone for every submodule note and hands-on exercise.

  1. 01
    Author declarationARM Templates and Bicep stage 1: author declaration with an auditable result before the next stage begins.
  2. 02
    Resolve parametersARM Templates and Bicep stage 2: resolve parameters with an auditable result before the next stage begins.
  3. 03
    Build dependency graphARM Templates and Bicep stage 3: build dependency graph with an auditable result before the next stage begins.
  4. 04
    Preview changeARM Templates and Bicep stage 4: preview change with an auditable result before the next stage begins.
  5. 05
    Submit ARM deploymentARM Templates and Bicep stage 5: submit arm deployment with an auditable result before the next stage begins.
  6. 06
    Capture outputs and operationsARM Templates and Bicep stage 6: capture outputs and operations with an auditable result before the next stage begins.

Convert an ARM deployment to Bicep

  1. Read an ARM JSON template
  2. Decompile or rewrite in Bicep
  3. Extract modules
  4. Add loops, conditions, and existing resources
  5. Run what-if and deploy incrementally

20 full submodule notes

Read in order
01

ARM architecture

ARM architecture defines the major responsibilities, boundaries, and control flow that engineers use before selecting an implementation detail within ARM Templates and Bicep. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
02

JSON templates

JSON templates turns a manual or repeated decision into versioned, parameterized, testable, and observable execution within ARM Templates and Bicep. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
03

Parameters

Parameters turns a manual or repeated decision into versioned, parameterized, testable, and observable execution within ARM JSON template authoring. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
04

Variables

Variables turns a manual or repeated decision into versioned, parameterized, testable, and observable execution within ARM JSON template authoring. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
05

Resources

Resources provides a concrete platform capability that must be configured, secured, validated, observed, and owned throughout its lifecycle within ARM JSON template authoring. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
06

Outputs

Outputs provides a concrete platform capability that must be configured, secured, validated, observed, and owned throughout its lifecycle within ARM JSON template authoring. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
07

Functions

Functions turns a manual or repeated decision into versioned, parameterized, testable, and observable execution within ARM Templates and Bicep. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
08

Dependencies

Dependencies provides a concrete platform capability that must be configured, secured, validated, observed, and owned throughout its lifecycle within ARM Templates and Bicep. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
09

Linked templates

Linked templates turns a manual or repeated decision into versioned, parameterized, testable, and observable execution within ARM Templates and Bicep. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
10

Deployment modes

Deployment modes moves a versioned change toward users through repeatable validation, immutable artifacts, controlled promotion, and recoverable release decisions within ARM Templates and Bicep. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
11

Bicep syntax

Bicep syntax provides a concrete platform capability that must be configured, secured, validated, observed, and owned throughout its lifecycle within ARM Templates and Bicep. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
12

Parameters

Parameters turns a manual or repeated decision into versioned, parameterized, testable, and observable execution within Bicep declaration authoring. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
13

Variables

Variables turns a manual or repeated decision into versioned, parameterized, testable, and observable execution within Bicep declaration authoring. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
14

Resources

Resources provides a concrete platform capability that must be configured, secured, validated, observed, and owned throughout its lifecycle within Bicep declaration authoring. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
15

Modules

Modules turns a manual or repeated decision into versioned, parameterized, testable, and observable execution within ARM Templates and Bicep. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
16

Outputs

Outputs provides a concrete platform capability that must be configured, secured, validated, observed, and owned throughout its lifecycle within Bicep declaration authoring. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
17

Loops

Loops turns a manual or repeated decision into versioned, parameterized, testable, and observable execution within ARM Templates and Bicep. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
18

Conditions

Conditions turns a manual or repeated decision into versioned, parameterized, testable, and observable execution within ARM Templates and Bicep. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
19

Existing resources

Existing resources provides a concrete platform capability that must be configured, secured, validated, observed, and owned throughout its lifecycle within ARM Templates and Bicep. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes
20

Bicep deployments

Bicep deployments moves a versioned change toward users through repeatable validation, immutable artifacts, controlled promotion, and recoverable release decisions within ARM Templates and Bicep. It is not an isolated definition: its value appears when it supports use Bicep for readable authoring, compose modules around lifecycle boundaries, reference existing resources explicitly, validate what-if output, and understand how incremental or complete mode affects unmanaged resources.

Open full notes