Configuration Management Tools for Virtual Machines
Start course

This course offers an in-depth look at VM scale sets, VM configuration management, VM storage options, and VM monitoring within Azure. We kick things off by looking at VM scale sets, vertical scaling, and horizontal scaling.

After that, you'll learn about the tools used for configuration management, as well as how to deploy software using VM extensions and how to deploy an Azure PowerShell DSC Configuration.

The course will then cover the wide range of VM storage options available in Microsoft Azure and show you how to use them. Finally, you'll learn about Azure Monitor, a service that allows you to monitor the performance and health of your VMs and VM scale sets.

This course is packed full of step-by-step demonstrations that you can follow along with, allowing you to see all of the above topics put into practice in real-life Azure environments.

For any feedback relating to this course, please feel free to contact us at

Learning Objectives

  • Scale VMs using scale sets and understand the difference between vertical and horizontal scaling
  • Learn about the tools used for managing VM configurations
  • Deploy software using VM extensions and PowerShell DSC
  • Understand the various VM storage options available in Azure
  • Learn about Azure Monitor and its uses

Intended Audience

  • Anyone interested in learning about scale sets, configuration management, storage, and monitoring for Azure VMs


To get the most from this course you should have a basic understanding of Microsoft Azure and of the Azure portal.


Hello and welcome to Configuration Management Tools For Virtual Machines. In this lesson, we're going to take a look at some of the key tools that are often used for VM configuration management. We will take a look at tools like Ansible, Chef, and Puppet. We will also look at Cloud-INIT for Linux virtual machines and at Azure custom script extensions for both Linux and Windows VMs. We'll round things out with virtual machine extensions and PowerShell Desired State Configuration.

Let's start with Ansible. Ansible is used for VM creation, application deployment, and for configuration management. It's an automation engine that uses an agentless model to manage target machines. To configure VMs with Ansible, you define specific configuration tasks in what are known as playbooks. Ansible modules are then used to perform specific configuration tasks.

Chef is another tool that can be used to manage VM configuration. You can use Chef to configure, deploy, and manage your infrastructure. Using Chef to manage the configuration of virtual machines requires you to install the Chef client on them. The Chef client communicates with one or more centralized Chef servers that hold and manage the configurations for your virtual machines.

Like Chef, Puppet is another enterprise-ready, automation platform. It's used to automate the deployment process as well as application delivery. To use Puppet, you install agents on your target VMs. This allows Puppet Master to define your desired configuration. You can even integrate Puppet with solutions like Jenkins and GitHub. This is typically done to improve the DevOps workflow for the organization.

When it comes to automating the configuration of a Linux VM, you can use Cloud-INIT. Cloud-INIT is a popular way of customizing a Linux VM during its initial boot. Cloud-INIT can install packages and even write files. It can also be used to configure users and security. Since it runs during the initial boot process, Cloud-INIT doesn't require any agents nor does it require any additional steps.

When you use Cloud-INIT to customize a Linux VM, you don't use apt-get install, nor do you use YUM to install packages. What you do is define a list of packages that you want to install. Cloud-INIT will then use the package management tool for your specific distro to install your defined packages.

The Azure custom script extension can be used to download and execute scripts on both Linux VMs and Windows VMs. While the custom script extension is often used during the creation of a VM, it can also be used even after the VM has been created.

Scripts that are used with the Azure custom script extension can be downloaded from Azure storage or from other public locations. GitHub repositories are a common source for script downloads.

A common example of the Azure custom script extension in action, that you'll often find online, is where it is used to automatically install IIS on a Windows VM. We will actually work through a demonstration of this later on.

Azure VM extensions are used to perform post-deployment configuration and automation tasks on Azure VMs. These extensions are essentially small applications that can be used to perform things like VM configuration, to install applications, and even to deploy monitoring and security solutions to virtual machines.

Virtual machine extensions are often used to deploy things like antivirus agents, monitoring agents, and even agents that are used by Chef and Puppet. You can use a virtual machine extension during the initial deployment of a new VM, or you can run extensions against a VM after it's been deployed.

Later on, we'll walk through a demonstration where we'll deploy software to a VM using virtual machine extensions.

PowerShell Desired State Configuration, or DSC, is a management platform that you can use to specify the configuration of target machines. You can use it to configure Windows machines natively, or you can use it on Linux through the open management infrastructure server offering from the open group.

PowerShell DSC is typically used to ensure a VM remains configured as required. You use a DSC configuration to specify what software should be installed on a VM. You can also use a DSC configuration to define how a VM should be configured.

To use PowerShell DSC, you must deploy a Local Configuration Manager engine on each target VM. This local engine, or LCM, configures the VM based on configurations that are pushed down to it. These configurations are stored on a central pull server, which communicates with the local LCM engine on each target VM so that it can provide the necessary configurations while also reporting on compliance.

About the Author
Learning Paths

Tom is a 25+ year veteran of the IT industry, having worked in environments as large as 40k seats and as small as 50 seats. Throughout the course of a long an interesting career, he has built an in-depth skillset that spans numerous IT disciplines. Tom has designed and architected small, large, and global IT solutions.

In addition to the Cloud Platform and Infrastructure MCSE certification, Tom also carries several other Microsoft certifications. His ability to see things from a strategic perspective allows Tom to architect solutions that closely align with business needs.

In his spare time, Tom enjoys camping, fishing, and playing poker.