DEMO: Deploying Software with VM Extensions
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 back. In this demonstration, I am going to show you how to deploy software to a virtual machine using VM extensions.

On the screen here you can see I'm logged in to my Azure portal. I'm on the Overview page of my virtual machine, called VM01. This virtual machine I have running is a Windows Server 2016 Datacenter OS. Now, offscreen I'm logged into this VM via RDP and I'm just pulling it over here onto my main screen here.

Now, let's go into services and we'll take a look at what we have running here. This is just a plain, vanilla install of Windows 2016. Nothing spectacular here, just basic services are running. What I'm going to do is minimize this, and from my Overview page for the VM, I'm going to browse down to Extensions under Settings.

If I select Extensions here and I click add, what happens is I get a blade that shows up here of all the different Windows-based extensions that I can install on my virtual machine. We have things like the Agent for Cloud Workload Protection for Symantec, the Puppet Agent, SentinelOne, NVIDIA GPU drivers, all this fun stuff. We also have the Custom Script Extension, the PowerShell Desired State configuration. All these different things we can install, usually agents, on our virtual machine.

What we're going to do here in this demonstration, is install the Network Watcher Agent for Windows. Now, this Network Watcher Agent allows you to monitor your VM's network performance and health. To do that we simply, like I did here, is select it from the list and click Create. And then since there's nothing here, there's no licensing or any information that we need to agree to, we simply have the OK button down here. And each of these blades will be different depending on what you're installing. So we'll go ahead and okay it.

We can see that the deployment is submitted and what'll happen is once this deployment gets submitted it'll show up in the list here of extensions. And if we click the notification bell up here, we can see that the deployment is still in progress. And we can see now that the provisioning has succeeded here. If we bounce over to our virtual machine, let me drag him back up over here, and we'll refresh this, if we scroll up here we can see we now have the Azure Network Watcher Agent installed and running. And that's really all there is to it.

Now, you're not going to install a whole bunch of different software using these preconfigured extensions, but what you can do is leverage the Custom Script Extension to call different scripts to pull different software in, and you can use the PowerShell Desired State configuration to maintain a configuration on the VM. These two options here are really where the power of extensions come into play.

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.