---
title: "Azure VM Scale Sets"
description: "Basic C# example of an Azure VM Scale Sets accessible over balanced HTTP endpoint."
url: "https://www.pulumi.com/dev/examples/classic-azure-cs-vm-scaleset/"
image: "https://www.pulumi.com/assets/og/dev/examples/classic-azure-cs-vm-scaleset.png"
---

# Azure VM Scale Sets

Basic C# example of an Azure VM Scale Sets accessible over balanced HTTP endpoint.

- Source on GitHub: https://github.com/pulumi/examples/tree/master/classic-azure-cs-vm-scaleset

## Get started with this example

This example lives in the [pulumi/examples](https://github.com/pulumi/examples/tree/master/classic-azure-cs-vm-scaleset) repo. Pull down just this directory to follow along:

```bash
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examples
git -C pulumi-examples sparse-checkout set classic-azure-cs-vm-scaleset
cd pulumi-examples/classic-azure-cs-vm-scaleset
```

This example deploys Scale Set of Linux web servers with autoscaling and starts a HTTP server on it.
A Load Balancer is connected in order to balance among VMs.

## Deploying the App

To deploy your infrastructure, follow the below steps.

### Prerequisites

1. [Install Pulumi](https://www.pulumi.com/docs/get-started/install/)
2. [Install .NET Core 3.0+](https://dotnet.microsoft.com/download)

### Steps

1. Login to Azure CLI (you will be prompted to do this during deployment if you forget this step):

    ```bash
    az login
    ```

1. Set an appropriate Azure location like:

    ```bash
    pulumi config set azure:location westus
    pulumi config set azure:subscriptionId <YOUR_SUBSCRIPTION_ID>
    ```

1. Run `pulumi up` to preview and deploy changes:

    ```console
    $ pulumi up
    Previewing changes:
    ...

    Performing changes:
    ...

    7 resources created
    ```

1. Get the IP address of the newly-created instance from the stack's outputs:

    ```console
    $ pulumi stack output IpAddress
    137.117.15.111
    ```

1. Check to see that your server is now running:

    ```console
    $ curl http://$(pulumi stack output IpAddress)
     Hello, World By <HOSTNAME>!
    ```

1. From there, feel free to experiment. Simply making edits and running `pulumi up` will incrementally update your stack.

1. Once you've finished experimenting, tear down your stack's resources by destroying and removing it:

    ```bash
    pulumi destroy --yes
    pulumi stack rm --yes
    ```
