In this document, you’ll learn how to install Volterra Node or Cluster (Multi-node) using Azure Marketplace Image.



  • VES account

  • Azure Account

  • Please ensure that you have visited Create Site before starting installation.

  • By proceeding with the installation, download and/or access and use, as applicable, of the Volterra software, and/or Volterra platform, you acknowledge that you have read, understand, and agree to be bound by this agreement.

Quick Deployment Option

The quickest way to install Volterra Node(s) is by using the Quickstart tool that comes packaged with a setup script and a container with Volterra Terraform deployment scripts.

Step 1 Download the Quickstart Tool

docker run --rm -v $(pwd):/opt/bin:rw cp / /opt/bin

Step 2 Create Azure Service Principal Account and capture the output

./ exec az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<SUBSCRIPTION_ID>"

From the output of this command, "appId" is the client_id, "password" is the client_secret, and "tenant" is the tenant_id.

Step 3 Create the Input file <vars_file> for the quickstart tool.

    "client_id": "<CLIENT_ID>",
    "client_secret": "<CLIENT_SECRET>",
    "tenant_id": "<TENANT_ID>",
    "subscription_id": "<SUBSRIBTION_ID>",

    "location": "eastus",

    "machine_public_key": "<SSH_PUBLIC_KEY>",

    "deployment": "<VOLTERRA_SITE_NAME>",
    "cluster_token": "<VOLTERRA_SITE_TOKEN>"


Step 4 Run the command below to deploy the Node(s). Please select ce-multi-az or ce-single-az depending on your need for single or multi-node deployment

./ apply -p azure -i <absolute_path_to_vars_file> -tn <ce-multi-azure | ce-single-azure> --force

Note: In case of two-interface node installation, use ce-single-2nic-azure or ce-multi-2nic-azure as the template name for single-node or multi-node site respectively.

Detailed Deployment Steps

If you’d like to customize the default terraform deployment scripts used by the Volterra Quickstart Script, then the following steps walk you through the needed steps.


Step 1: Run Terraform CLI container

docker run --entrypoint tail --name terraform-cli -d -it \
-w /terraform/templates \
-v ${HOME}/.ssh:/root/.ssh \
volterraio/volt-terraform:latest \
-f /dev/null

Step 2: Enter terraform cli container

docker exec -it terraform-cli sh

Step 3: Login to Azure using your AD (Active Domain) credentials by running below command and follow on-screen instructions

az login

Step 4: Set the default subscription and create a resource group

az account list --output table

Step 5: Set a default subscription by name or uuid

az account set -s $SUBSCRIPTION_ID

Step 6: Verify the correct subscription is set

 az account list --output table --query '[].{Name:name, IsDefault:isDefault}'

Step 7: Create a Service Principal account, which has permissions to manage resources in the selected subscription.

az ad sp create-for-rbac -n <deployment-name> --role="Contributor" --scopes="/subscriptions/$SUBSCRIPTION_ID"

Step 8: Capture the az ad sp create-for-rbac output

        "appId": "00000000-0000-0000-0000-000000000000",
        "displayName": "azure-cli-2017-06-05-10-41-15",
        "name": "http://azure-cli-2017-06-05-10-41-15",
        "password": "0000-0000-0000-0000-000000000000",
        "tenant": "00000000-0000-0000-0000-000000000000"


  • "appId" is the client_id in tfvars file
  • "password" is the client_secret in tfvars file
  • "tenant" is the tenant_id` in tfvars file

Step 10: Create a terraform vars file depending on your needs for single node or multi-node site

cd <ce-single-azure | ce-multi-azure>
cp sample.tfvars.json azure.tfvars.json

Note: In case of two-interface node installation, change to the ce-single-2nic-azure or ce-multi-2nic-azure directory for single-node or multi-node site respectively.

Step 11: Edit the azure.tfvars.json and set the needed Azure parameters.

    "client_id": "<CLIENT_ID>",
    "client_secret": "<CLIENT_SECRET>",
    "tenant_id": "<TENANT_ID>",
    "subscription_id": "<SUBSRIBTION_ID>",

    "location": "eastus",

    "machine_public_key": "<SSH_PUBLIC_KEY>",

    "deployment": "<VOLTERRA_SITE_NAME>",
    "cluster_token": "<VOLTERRA_SITE_TOKEN>"


Step 12: Run the required terraform commands

terraform init
terraform apply -var-file=azure.tfvars.json

Return Back to Create Site document to accept the Registration


Destroying the node requires you to first decomission and delete the node from the Volterra console using the Remove Site instructions.

Step 1: Login to terraform-cli container

docker exec -it terraform-cli sh

Step 2: Run terraform destroy

cd templates/ce-single-azure
terraform destroy -force -var-file=azure.tfvars.json

Step 3: Delete Service Principal account

az ad sp delete --id <deployment-name>

Step 4: Remove Votlerra container (optional)

docker rm -f terraform-cli