1 Infrastructure as Code


This chapter covers

  • Working with infrastructure
  • The benefits of Infrastructure as Code
  • The difference between Azure Service Management and Azure Resource Manager
  • Other Infrastructure as Code tools available for Azure

If you have worked with Microsoft Azure before, you may have managed infrastructure in one way or another. In Azure, just as in any cloud platform, infrastructure can be created and altered quickly and easily. Using one or more of the Azure portal, PowerShell cmdlets, RESTful HTTP calls, SDKs, or ARM templates, you can create servers or PaaS and SaaS services in minutes or even seconds. This is in contrast to how infrastructure was managed in the past, or often still is on-premises.

The unique proposition of the cloud has transformed the way we create and operate software in the last decade. In particular, the way we manage infrastructure that runs applications has changed. Creating cloud infrastructure on demand and discarding it hours or days later has become a common approach, especially for test environments.

Two characteristics of the cloud, in particular, have accelerated this change:

  • Elasticity
  • Self-service

1.1 Working with infrastructure

1.1.1 DevOps

1.1.2 Preventing configuration drift

1.2 The benefits of Infrastructure as Code

1.2.1 IaC allows for automation

1.2.2 IaC allows for a declarative approach

1.2.3 IaC provides a human-readable format

1.3 The Azure Resource Manager

1.3.1 Control plane and data plane

1.3.2 ARM templates

1.3.3 The Bicep language

1.3.4 Azure Service Management (ASM is not ARM)

1.4 Other tools