Skip to main content

Web Server Component Using Azure Virtual Machine

Basic example of an Azure web server accessible over HTTP

This example lives in the pulumi/examples repository. Check out just this directory to use it:

Get started with this example
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examples
git -C pulumi-examples sparse-checkout set classic-azure-go-webserver-component
cd pulumi-examples/classic-azure-go-webserver-component

This example provisions a configurable number of Linux web servers in an Azure Virtual Machine, and returns the resulting public IP addresses. This example uses a reusable Pulumi component to simplify the creation of new virtual machines. By defining a WebServer class, we can hide many details (see here for its definition).

Prerequisites#

Running the App#

  1. Create a new stack:

    Terminal window
    pulumi stack init dev
  2. Configure the deployment. The username and password here will be used to configure the Virtual Machine. The password must adhere to the Azure restrictions on VM passwords.

    Terminal window
    pulumi config set azure:location westus # any valid Azure region will do
    pulumi config set azure:subscriptionId <YOUR_SUBSCRIPTION_ID>
    pulumi config set username webmaster
    pulumi config set password <your-password> --secret
    pulumi config set count 5 # optional -- will default to 2 if left out

    Note that --secret ensures your password is encrypted safely.

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

    Terminal window
    az login
  4. Run pulumi up to preview and deploy changes:

    Terminal window
    pulumi up
    Previewing changes:
    ...
    Performing changes:
    ...
    info: 15 changes performed:
    + 15 resources created
    Update duration: 4m27s
  5. Check the resulting IP addresses:

    Terminal window
    pulumi stack output ipAddresses
    [ 40.112.181.239, ..., 40.112.181.240 ]

Related

The infrastructure as code platform for any cloud.