---
id: "azure-lab-services"
type: "component"
kind: "virtual-desktop"
provider: "azure"
category: "compute"
docs: "https://learn.microsoft.com/en-us/azure/lab-services/lab-services-overview"
url: "https://localhost:3000/catalogue/components/azure-lab-services"
---

# Azure Lab Services

Fully managed classroom labs giving each lab user a dedicated virtual machine on a schedule and quota.

| | |
|---|---|
| Provider | [azure](https://localhost:3000/catalogue?provider=azure) |
| Kind | [Virtual desktop pool](https://localhost:3000/catalogue/kinds/virtual-desktop) |
| Category | Compute |
| Official docs | [https://learn.microsoft.com/en-us/azure/lab-services/lab-services-overview](https://learn.microsoft.com/en-us/azure/lab-services/lab-services-overview) |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `advancedNetworking` | boolean | — | no | false | inherited |
| `autoShutdown` | boolean | — | no | — | inherited |
| `hostCount` | integer | — | no | — | inherited |
| `imageSource` | enum | `marketplace`, `compute-gallery` | no | — | inherited |
| `loadBalancing` | enum | `breadth-first`, `depth-first` | no | — | inherited |
| `managed` | boolean | — | no | false | **true** |
| `maxSessionsPerHost` | integer | — | no | — | **1** |
| `mfaRequired` | boolean | — | no | — | inherited |
| `persistentProfiles` | boolean | — | no | — | inherited |
| `sessionMode` | enum | `pooled`, `personal` | no | — | **"personal"** |
| `usageQuotaHours` | integer | — | no | — | inherited |

Bold values are the ones this component pins.

## Rules that apply · 1

### Stateful node without zone redundancy `stateful-node-without-zone-redundancy` (error)

- Page: https://localhost:3000/catalogue/rules/stateful-node-without-zone-redundancy.md
- Why: A stateful compute node pinned to exactly one availability zone disappears with that zone, and its state goes with it. Nodes inside a cell are exempt, because there the cell is deliberately single-zone and redundancy comes from the other cells.
- Applies to: every node in category compute
- Message: Stateful node '{{node.id}}' lives in exactly one availability zone. A zone outage takes its state with it.

It fires when:

- all of these hold:
  - the node's `stateless` is false
  - the node sits inside exactly 1 availability-zone group
  - this does not hold:
    - the node sits inside at least one cell group

## Other products of the same kind · 19

- [Elastic Cloud Phone](https://localhost:3000/catalogue/components/alibaba-elastic-cloud-phone.md) `alibaba-elastic-cloud-phone` — alibabacloud
- [WUYING Workspace](https://localhost:3000/catalogue/components/alibaba-wuying-workspace.md) `alibaba-wuying-workspace` — alibabacloud
- [Amazon WorkSpaces Applications](https://localhost:3000/catalogue/components/aws-appstream.md) `aws-appstream` — aws
- [AWS Cloud9](https://localhost:3000/catalogue/components/aws-cloud9.md) `aws-cloud9` — aws
- [Amazon GameLift Streams](https://localhost:3000/catalogue/components/aws-gamelift-streams.md) `aws-gamelift-streams` — aws
- [Amazon WorkSpaces](https://localhost:3000/catalogue/components/aws-workspaces.md) `aws-workspaces` — aws
- [Amazon WorkSpaces Pools](https://localhost:3000/catalogue/components/aws-workspaces-pools.md) `aws-workspaces-pools` — aws
- [Amazon WorkSpaces Secure Browser](https://localhost:3000/catalogue/components/aws-workspaces-secure-browser.md) `aws-workspaces-secure-browser` — aws
- [Microsoft Dev Box](https://localhost:3000/catalogue/components/azure-dev-box.md) `azure-dev-box` — azure
- [Azure DevTest Labs](https://localhost:3000/catalogue/components/azure-devtest-labs.md) `azure-devtest-labs` — azure
- [Azure Virtual Desktop](https://localhost:3000/catalogue/components/azure-virtual-desktop.md) `azure-virtual-desktop` — azure
- [Cloudflare Browser Isolation](https://localhost:3000/catalogue/components/cloudflare-browser-isolation.md) `cloudflare-browser-isolation` — cloudflare
- [Citrix Virtual Apps and Desktops](https://localhost:3000/catalogue/components/citrix-virtual-apps.md) `citrix-virtual-apps` — default
- [Apache Guacamole](https://localhost:3000/catalogue/components/guacamole.md) `guacamole` — default
- [Kasm Workspaces](https://localhost:3000/catalogue/components/kasm.md) `kasm` — default
- [Omnissa Horizon](https://localhost:3000/catalogue/components/omnissa-horizon.md) `omnissa-horizon` — default
- [Generic virtual desktop pool](https://localhost:3000/catalogue/components/virtual-desktop.md) `virtual-desktop` — default
- [Cloud Workstations](https://localhost:3000/catalogue/components/google-cloud-workstations.md) `google-cloud-workstations` — gcp
- [OCI Secure Desktops](https://localhost:3000/catalogue/components/oci-secure-desktops.md) `oci-secure-desktops` — oci

## Use it in a design

```yaml
nodes:
  - { id: "azure-lab-services", component: "azure-lab-services" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Azure Lab Services: fully managed classroom labs that give each lab user a dedicated VM. The
# overview states the service manages the infrastructure, assigns lab users an individual lab virtual
# machine, encrypts all content with a Microsoft-managed key, and offers schedules, usage quotas and
# automatic shutdown as opt-in cost controls. Retiring on 28 June 2027.
schemaVersion: "1"
type: "component"
id: "azure-lab-services"
kind: "virtual-desktop"
provider: "azure"
docs: "https://learn.microsoft.com/en-us/azure/lab-services/lab-services-overview"
defaults:
  sessionMode: "personal"
  maxSessionsPerHost: 1
  managed: true
properties:
  imageSource:
    type: "enum"
    values: ["marketplace", "compute-gallery"]
  usageQuotaHours:
    type: "integer"
  autoShutdown:
    type: "boolean"
  advancedNetworking:
    type: "boolean"
    default: false
```

Human page: https://localhost:3000/catalogue/components/azure-lab-services
