If you work with IT as I do, you probably have been told that “cloud computing is going to completely change both the way people do business, and IT professionals work”, right?

Yes, we’ve heard that in many events, posts like this, and such, however, cloud computing is already here (probably your company is using a cloud computing platform right now) and the things doesn’t seemed to be changed that much, does it? I mean, VMs are still there running most of their applications inside the companies. The IT team still do the management (ok, the way this management has been done might be changed a bit but not entirely, right?) and your company probably still depend on the technical skills of the internal team to make the “magic happen”.

The statement mentioned in the first paragraph is not a lie, though. I would rather rephrase it to “cloud computing has the potential to completely change both the way people do business, and IT professionals work”. Why? Because my guessing on it is that the market still realizes the potential offered by the cloud computing platforms. They are yet realizing that cloud computing is much more than redundant Virtual Machines up and running. They are still understanding that specialized services are the ones whereby the value can deeply be measured.

Today I want to bring you a vision (and the value enclosed to it) of one these very specialized services announced on GA on Azure some weeks ago and throughout which amazing results can be accomplished, especially in Education; Azure Lab Services.

What is this service about?

Lab Services is a Software as a Service (SaaS) service offering in Azure which encapsulates both hardware and software complexity of making a virtual lab available to its users through the internet. This way, instead of leveraging virtual machine clusters to provide virtual stations to lab’s users, educational institutions have now the ability to directly go to Azure Portal, create a new lab instance, configure templates for the different kinds of labs, define the number of virtual instances being made available to its users, and at the end, sharing the access to it over email. Cool, huh?

The official page of the service will certainly provide you more details on it. Just give a click on this link to get there.

To show you the value and potential impact of this product, from now on I’ll:

  1. Show you how to use it, meaning, how to deploy a new lab service, how to configure templates, how to explore configurations and how to invite users to use the lab.
  2. Then, I’ll put my comments on it.

Scenario for Education

Educational institutions struggle with robust solutions for virtual lab services. It is usually expensive and does require a highly skilled technical team to get it set up. Besides that, it isn’t that simple to get teachers and students engaged due to the working model of the majority of solutions available into the market.

Azure Lab Services does present a strong fit on Education because it does encapsulate the aspects mentioned before and has the ability to provide the following.

  • Create a managed classroom lab. You just tell the service exactly what you need, and it will create and manage the infrastructure of the lab for you so that you can focus on teaching your class, not technical details of a lab.
  • Provide students with a lab of virtual machines that are configured with exactly what’s needed for a class. Give each student a limited number of hours for using the VMs for class work.
  • Move your school’s physical computer lab into the cloud. Automatically scale the number of VMs only to the maximum usage and cost threshold that you set on the lab.
  • Delete the lab with a single click once you’re done.

Sounds interesting, doesn’t it? So, let’s get our hands dirty with it.

Azure Service Labs core concepts

First things first, though. We’ll get our hand dirty in a second, but before that, there are some basic concepts we’ll need to understand prior to use the service itself.

1. Lab Accounts

A lab account is a management account each team or department establishes to create and track labs. Each lab account is connected to an Azure subscription, and billing and organization-level policies are applied to it.

You can have as many Lab Accounts as you want within a given Azure Subscription, and each Lab Account can support several labs underneath it. It means that you could have, for example, a Lab Account per department (like “Research Labs”, “Computer Science Labs”, “Business School Labs”, and so forth) and under each department, several labs being shared. Please, see Figure 1 below for clarification.

Figure 1. Relationship between Azure Subscription and Lab Accounts

2. Users and Roles

Let’s start by understanding the different types of users within a lab. Azure Service Labs understands that for a given lab, there are three different types of users with different interests within a lab; Administrators, Instructors, and Lab Users.

Administrators are powerful users within the lab. They will always be able to create new lab accounts, set up policies for existing labs, give proper permissions to instructors to set up their own labs, and so on. For most scenarios, Administrators are the ones sitting in the IT departments.

Instructor, as its name automatically suggests, are the users in charge to use a given lab towards to teach something. They might be professors, assistants, and more. They do configure a given lab and do invite students and further users to join the lab.

Lab Users are often the students but not bounded to it. They do use preconfigured VMs in an instructor’s lab. The only thing they need to do? Access the lab portal, pick up the VM available, and get immediate access to its environment.

Using Azure Service Labs

From now on, I’m assuming that you already have an Azure Subscription up and running, and free access to the internet.

To build up an Azure Service Labs environment, the first thing we need to do is to set up a Lab Account. You will find a tutorial very straightforward on how to accomplish it by giving a click on this link. As a result of this process, I see Figure 2, below.

Figure 2. Lab Services account created

Next, I will have a new instructor being added. Important to note at this point that I have the ability to do it (define instructors/lab creators) from here because when I created a the new lab account I was automatically settled as “Administrator”.

On the blade presented by Figure 2, you’ll be able to do it through the option “Add Lab Creators”. I have added an instructor called “Fabrício Lopes Sanchez”, as you can see through the Figure 3.

Figure 3. Adding a new instructor (or Lab Creator) into the Lab Account

Next, as a professor of Computer Science department teaching .NET to my students within Americas University, I want to set up a new lab for it. To get there, I will open up a new tab in my preferred browser and navigate to https://labs.azure.com. As a result of this process, I see the Figure 4, shown below.

Figure 4. Dashboard whereby labs are created and managed

As I have permission for that, I’ll go ahead and create a new lab for my .NET Course, which I’m calling here “.dotnet_101”. All I need to do is to give a click on “New lab”, on upper left menu. As a result of this process, you’ll should be able to see a new blade coming up. Just fulfill it up properly. Mine (which has hypothetically 10 students registered) is being shown by Figure 5.

Figure 5. Creating a new lab for 10 users

By clicking on “Save”, I’m automatically directed to a new page which allows me to define those kinds of Virtual Machine and pre-built images available for me to use on top of those VMs selected, as you can see by watching the Figure 6, below.

Note that this is not the final version of the VM you’ll be making available to your students yet. At this point, Lab Services is allowing you to create a basic template based in some pre-build images. Because most of the teachers want to add tools on top of these images (for instance: for my dotnet_101 course, I want students to use VS Code and .NET Core 2.1+). Which means that I need to manually install and configure those properly (adjusting the initial template) before to make VMs available into the lab. It makes sense, right?!

Figure 6. Virtual Machine configuration

There are three main aspects to be considered here.

Virtual machine size

At this point, Lab Services allows you to select a VM size among four options: Small (which gives you 2 vCores + 3.5 GB RAM); Medium (which gives you 4 vCores + 7 GB RAM); Large (8 vCores + 32 GB RAM); GPU (which gives you 12 GPU vCores + 112 GB RAM).

Each one of these options seem to be more suitable to a specific model of workload. My assumptions on there are:

  • Small: ideal for lightweight workloads and with no graphical UI. Linux and Windows Core applications fit perfectly here. Also, low traffic web servers (like Apache, Nginx, and others) and small databases (like SQL Local DB, MySQL, Postgre, and so forth) could easily be supported here as well.
  • Medium: ideal for workloads which require a bit more of memory and processing like, Windows 10 running relational databases, Office (Word, Excel, Power Point, and so forth). Some development workloads would fit perfectly here as well like, Visual Studio Community, SQL Server Developer Edition, Eclipse, etc.
  • Large: ideal for server workloads (like Windows Server) with graphical UI and which require faster processors and disk performance. At this level, if you are teaching virtualization concepts, for example, you could be supported once nested virtualization is allowed.
  • GPU: ideal for graphical intense workloads, like Maya 3D, Autocad, Adobe Photoshop, and many others. Parallel processing would be an ideal workload for it as well.

It refers to the location (Azure Region) from where these machines will be called to action. You should carefully look at Azure Regions map website to select the right location in the World where to place those VMs. The closer they are of your students, the better their experience within the lab will be.

Virtual Machine Image

It refers to the pre-built image will want to put first on top of the selected VM. In my case, because I’m teaching .NET and I want to start my students on the Windows environment first, I’ll keep the selection of “Windows 10 Pro”. Then, on top of this template, I’ll add the tools I want to use all over my course with students.

By giving a click on “Next”, the Lab Services portal is going to ask you credentials for accessing the “template VM” (please, see the Figure 7). Keep in mind that your students will need to use the same credentials to access the Lab’s VM once it is available.

Figure 7. Defining credentials to the Lab’s VMs

Ok. It seems to be the last step before to have the template image for customization up and running. So, I’ll go ahead and give a click on “Create”. As result, you’ll see a screen pretty similar to that one presented by Figure 8.

Figure 8. Waiting for the template VM’s creation

After a couple minutes waiting for this step completion, I was able to see the screen presented by the Figure 9, which brings me some useful instructions about how to get myself connected into the template VM towards to install the tools I want to make available to my students.

Important to mention that you don’t need to do this “customization” work right now. You can easily stop the recently allocated template VM (by giving a click on “Stop”) and then, get back afterwards to complete this step.

Figure 9. Connecting into the template VM

Ok. So I’ll go ahead and give a click on “Connect” option, in the very top. By doing this I was brought to a RDP file, which will establish the connection between myself and the template VM itself. Then, I provided the credentials I defined early on and… as you can on the Figure 10, I have the VM open and running.

Figure 10. Template VM up and running

Next, I have installed and configured both Visual Studio Code and .NET Core 2.2 (newest and stable version of .NET Core when this article was written. The Figure 11 shows both of these elements up and running in my template VM.

Figure 11. Installing tooling for the Lab

Done. Now, I have my image already up and running and customized with the tools that, as the Instructor, I’m going to use within the Lab so, I can go ahead and make it available to the students. To do that, I’ll close up the RDP session and get back to the Lab’s portal (on that regard we’re still stuck on Figure 9) and give a click on “Next”, and then, “Publish”.

By doing so, Lab Service’s will promote the “template VM” which we’ve been working so far as the default image to be used by the students within the lab “dotnet_101”. You should be seen a screen like the one presented by Figure 12 as result of this procedure.

Figure 12. Publishing template VM and promoting to default image

If everything went well, in about 20-30 minutes you should be able to see the screen presented by the Figure 13. The options presented into it tell us that our Lab is finally up and running. So, let’s explore the option a lit bit and see what do we have down here.

Figure 13. Lab created

Under the “Settings” area, we can see the options for “Virtual Machines”, “Schedules” and “Users”. Under “Templates” area we have “dotnet_101”, which presents the template we have defined.

Virtual machines

By giving a click on “Virtual machines” we can see a list of virtual machines available within the Lab (please, see Figure 14). In our case, we defined that our Lab is going to be comprised of 10 users so, this is the total capacity of my lab. We can also see that both VMs are still “unsigned” and “stopped”. It means that no user was still invited to use the lab and also, at this very moment, all VMs I have in my Lab are not being used.

Figure 14. Virtual machines available for usage within the lab “dotnet_101”

This screen is particularly useful to Instructors, once they can see if the students invited to the Lab whether are joining or not. Also, imagine a case where a given student leave the lab without closing the RDP connection. It would incur unnecessary charges to the institution, once the VM keep up. By using this view, the Instructor could easily close the connection and stop the running VM.


This screen (Figure 15) shows me that I could easily create a schedule for the lab. I could determine, for example, that we are going to have classes every Monday starting on April 1st, 2019 up to June 30th, 2019 from 8 AM to 9 AM. By doing so, my students would be automatically notified of it, and this appointment is going to be sent to them to be added into their agendas. Pretty cool, huh?

Figure 15. Adding a recurrent schedule for the Lab

Important to mention that, instructors can assign usage quotas to students within the lab, and one of the options available for that is setting up an option which bounces Lab usage for students to the scheduling already created. Other than that, users wouldn’t access Lab’s VMs at all.


The Users screen (Figure 16) shows you some options to manage students within the Lab. You can easily invite students to the Lab (either by adding them manually through the portal or importing them from a CSV file). Also, you have the option to manually share the link to the Lab by copying it and pasting somewhere. You could also send an invitation using the web portal as well. Pretty simple and straightforward.

Figure 16. Adding and inviting a new student to the Lab

The student view

So far we’ve saw everything that we could see about creating and configuring a new Lab, always taking advantage of the powers of instructors. But, what about the student view? I mean, how does the invitation and experience looks like to them?

As you might have noticed, I have invited an student to my Lab. This student was invited through the email “fa_****@hotmail.com”, right? What happens now is that, the student will receive a notification from the Lab Services with a personalized message I put on the invitation letting him know that the lab is available for him to join. Please, see the Figure 17 below.

Figure 17. Student’s invitation to get registered to the Lab

By giving a click into “Register for the lab” the student will be redirected to Lab Services portal. The portal will ask him/her to get authenticated with the same credentials informed by the instructor and, that’s all. The student should ended up seeing a screen like the one presented by the Figure 18.

Figure 18. Viewing the Labs available

Done. Student is already in and about to start accessing the Lab. To get inside the Lab’s VM, the only thing they need to do is to click at “Start”, get the RDP file, get logged into the VM by using the same credentials set up on the Lab’s creation and that’s all.

Important considerations

  1. Both Instructors and Students don’t need to have Azure Subscriptions to set up and use Labs. However, they do need to have either a Microsoft Account (MSA) or a corporate account backed up by Azure Active Directory (like O365, for example).
  2. You can define VM usage quotas for the students within the Lab. There are three categories of constraints you can apply (see Figure 19). To define it, just go to “Users” > “Quota per user” and select the option that best suits your needs. Keep in mind that, by defaul, there is no quota set up for users within the Lab.
  3. By default, Lab Services pulls together some (but not all of them) pre-built images from Azure Marketplace. However, you can bring another ones which aren’t being showed. To do it, just get back to the Lab Account we created on the very beginning at the Azure Portal, give a click to Marketplace images option and enable/disable the ones you wish to leverage to your instructors.
  4. As an instructor, make sure that you explicitly invite users to the Lab. Only adding them into it doesn’t mean that they were invited. It only means that you got them enabled to use the Lab, however, the user needs explicitly get themselves registered into the Lab, otherwise, they won’t be able to use it.
  5. To be didactic and present you how the service works, I used the Azure portal for that. However, keep in mind that you could automatize the whole thing by scripting it. One the options you could use is Azure CLI. Please, refer to the documentation available here to be aware about the details.
  6. A lab owner can set lab schedules to automatically shut down and start up virtual machines. The lab owner can set a schedule to specify the time slots when the lab’s virtual machines are accessible to users, set usage policies per user or per lab to optimize cost, and analyze usage and activity trends in a lab. For managed lab types such as classroom labs, currently a smaller subset of cost optimization and analysis options are available.
  7. A lab owner can set up a private virtual networks and a subnet for a lab, and enable a shared public IP address. Lab users can securely access resources using the virtual network configured with ExpressRoute or site-to-site VPN.
  8. Azure Lab Services allows you to integrate the labs into your organization’s website and management systems. You can automatically provision environments from within your continuous integration/continuous deployment (CI/CD) tools.

Let me know if you have any doubts about the service by leaving a comment below. I’ll be happy to go further with you on that conversation.

Hope it helps. Enjoy!


Leave a Reply

Avatar placeholder

Your email address will not be published.