Skip to content

Instantly share code, notes, and snippets.

@iandow
Last active September 1, 2020 19:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iandow/ab9204881b2f4161099bb6e468936499 to your computer and use it in GitHub Desktop.
Save iandow/ab9204881b2f4161099bb6e468936499 to your computer and use it in GitHub Desktop.
{
"handler": "Microsoft.Compute.MultiVm",
"version": "0.0.1-preview",
"parameters":
{
"basics":
[
{
"name": "environmentName",
"type": "Microsoft.Common.TextBox",
"label": "Environment Name",
"defaultValue": "",
"toolTip": "The environment name. Used as the prefix for resource names created by this template. It cannot be more than 13 characters long.",
"constraints":
{
"required": true,
"regex": "^[a-zA-Z0-9]{1,13}$",
"validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-13 characters long."
},
"options": {}
},
{
"name": "adminUsername",
"type": "Microsoft.Compute.UserNameTextBox",
"label": "Username",
"toolTip": "Admin username for the VMs.",
"osPlatform": "Linux"
},
{
"name": "adminPassword",
"type": "Microsoft.Compute.CredentialsCombo",
"label":
{
"authenticationType": "Authentication type",
"password": "Password",
"confirmPassword": "Confirm password",
"sshPublicKey": "SSH public key"
},
"toolTip":
{
"authenticationType": "Select the authentication type.",
"password": "Enter the password for 'Password' authentication type.",
"sshPublicKey": "Enter the SSH Public Key for 'SSH public key' authentication type."
},
"constraints":
{
"required": true
},
"options":
{
"hideConfirmation": false
},
"osPlatform": "Linux"
}
],
"steps":
[
{
"name": "commonSettings",
"label": "Common Settings",
"subLabel":
{
"preValidation": "Configure common settings",
"postValidation": "Done"
},
"bladeTitle": "Common Settings",
"elements":
[
{
"name": "storageAccount",
"type": "Microsoft.Storage.StorageAccountSelector",
"label": "Storage Account",
"defaultValue":
{
"name": "appintstorage01",
"type": "Standard_LRS"
}
},
{
"name": "virtualNetwork",
"type": "Microsoft.Network.VirtualNetworkCombo",
"label": {
"virtualNetwork": "Virtual Network",
"subnets": "Subnets"
},
"toolTip":
{
"virtualNetwork": "Virtual network.",
"subnets": "Subnets in the selected virtual network."
},
"defaultValue":
{
"name": "appintvnet01",
"addressPrefixSize": "/16"
},
"constraints": {
"minAddressPrefixSize": "/16"
},
"subnets": {
"subnet1": {
"label": "First Subnet",
"defaultValue": {
"name": "default",
"addressPrefixSize": "/24"
},
"constraints": {
"minAddressPrefixSize": "/24",
"minAddressCount": 0,
"requireContiguousAddresses": true
}
}
}
}
]
},
{
"name": "aiConfiguration",
"label": "AppInternals Configuration",
"subLabel":
{
"preValidation": "Configure AppInternals settings",
"postValidation": "Done"
},
"bladeTitle": "AppInternals Configuration",
"elements":
[
{
"name": "publicIP",
"type": "Microsoft.Network.PublicIpAddressCombo",
"label":
{
"publicIpAddress": "Public IP Address",
"domainNameLabel": "Domain Name Label"
},
"toolTip":
{
"publicIpAddress": "The name of the Public IP to be assigned to the AppInternals node.",
"domainNameLabel": "The domain name label for the AppInternals VM that has a public IP. For example: 'appint01'. If the region selected is 'West US', then the full DNS name for this example would be 'appint01.westus.cloudapp.azure.com'."
},
"defaultValue":
{
"publicIpAddressName": "appinternals",
"domainNameLabel": "appinternals"
},
"options":
{
"hideNone": true,
"hideDomainNameLabel": false
}
},
{
"name": "aiVMSize",
"type": "Microsoft.Compute.SizeSelector",
"label": "AppInternals VM Size",
"toolTip": "The size of the AppInternals VM.",
"recommendedSizes":
[
"Standard_A4",
"Standard_A5",
"Standard_A6"
],
"osPlatform": "Linux",
"imageReference":
{
"publisher": "riverbed",
"offer": "riverbed-steelcentral-appinternals",
"sku": "ai_byol"
},
"count": 1
}
]
},
{
"name": "aiCustomerInformation",
"label": "Customer Information",
"subLabel":
{
"preValidation": "Enter Customer Information",
"postValidation": "Done"
},
"bladeTitle": "Customer Information",
"elements":
[
{
"label": "Are you an existing Riverbed customer?",
"name": "existingCustomer",
"type": "Microsoft.Common.DropDown",
"defaultValue": "",
"toolTip": "Select 'No' if unsure",
"constraints": {
"required": true,
"allowedValues": [
{
"label": "Yes",
"value": "yes"
},
{
"label": "No",
"value": "no"
}
]
}
},
{
"label": "First Name",
"name": "firstName",
"type": "Microsoft.Common.TextBox",
"toolTip": "Enter your first name.",
"constraints":
{
"required": true,
"regex": "^[a-zA-Z'.\\s]{1,100}$",
"validationMessage": "Invalid name. Allowed letters are a-z and A-Z. Must be no more than 100 characters long."
}
},
{
"label": "Last Name",
"name": "lastName",
"type": "Microsoft.Common.TextBox",
"toolTip": "Enter your last name.",
"constraints":
{
"required": true,
"regex": "^[a-zA-Z'.\\s]{1,100}$",
"validationMessage": "Invalid name. Allowed letters are a-z and A-Z. Must be no more than 100 characters long."
}
},
{
"label": "Job Title/Role",
"name": "jobTitle",
"type": "Microsoft.Common.TextBox",
"toolTip": "Enter your job title or role.",
"constraints":
{
"required": true,
"regex": "^[a-zA-Z0-9'.,\\s]{3,100}$",
"validationMessage": "Invalid name. Only alphanumeric characters are allowed, and the value must be 3-100 characters long."
}
},
{
"label": "Email Address",
"name": "email",
"type": "Microsoft.Common.TextBox",
"toolTip": "Enter your email address.",
"constraints":
{
"required": true,
"regex": ".+@.+\\..+",
"validationMessage": "Please enter a valid email address."
}
},
{
"label": "Company Name",
"name": "companyName",
"type": "Microsoft.Common.TextBox",
"toolTip": "Enter company name.",
"constraints":
{
"required": true,
"regex": "^[a-z0-9A-Z',.\\s]{3,100}$",
"validationMessage": "Invalid company name. Only alphanumeric characters and periods are allowed, and it must be 3-100 characters long."
}
},
{
"label": "Company Address",
"name": "companyAddress",
"type": "Microsoft.Common.TextBox",
"toolTip": "Enter your company street, city, state, postal code, and country all on one line.",
"constraints":
{
"required": true,
"regex": "",
"validationMessage": "Company address is too long. Please shorten it."
}
}
]
}
],
"outputs":
{
"location": "[location()]",
"environmentName": "[basics('environmentName')]",
"adminUsername": "[basics('adminUsername')]",
"adminPassword": "[basics('adminPassword').password]",
"authenticationType": "[basics('adminPassword').authenticationType]",
"sshPublicKey": "[basics('adminPassword').sshPublicKey]",
"storageAccountName": "[steps('commonSettings').storageAccount.name]",
"storageAccountNewOrExisting": "[steps('commonSettings').storageAccount.newOrExisting]",
"storageAccountType": "[steps('commonSettings').storageAccount.type]",
"existingStorageAccountResourceGroup": "[steps('commonSettings').storageAccount.resourceGroup]",
"virtualNetworkName": "[steps('commonSettings').virtualNetwork.name]",
"virtualNetworkAddressPrefix": "[steps('commonSettings').virtualNetwork.addressPrefix]",
"virtualNetworkNewOrExisting": "[steps('commonSettings').virtualNetwork.newOrExisting]",
"existingVirtualNetworkResourceGroup": "[steps('commonSettings').virtualNetwork.resourceGroup]",
"subnetName": "[steps('commonSettings').virtualNetwork.subnets.subnet1.name]",
"subnetAddressSpace": "[steps('commonSettings').virtualNetwork.subnets.subnet1.addressPrefix]",
"aiPublicIPName": "[steps('aiConfiguration').publicIP.name]",
"aiDomainNameLabel": "[steps('aiConfiguration').publicIP.domainNameLabel]",
"aiPublicIPNewOrExisting": "[steps('aiConfiguration').publicIP.newOrExisting]",
"existingAiPublicIPResourceGroup": "[steps('aiConfiguration').publicIP.resourceGroup]",
"aiVMSize": "[steps('aiConfiguration').aiVMSize]",
"existingCustomer": "[steps('aiCustomerInformation').existingCustomer]",
"firstName": "[steps('aiCustomerInformation').firstName]",
"lastName": "[steps('aiCustomerInformation').lastName]",
"jobTitle": "[steps('aiCustomerInformation').jobTitle]",
"email": "[steps('aiCustomerInformation').email]",
"companyName": "[steps('aiCustomerInformation').companyName]",
"companyAddress": "[steps('aiCustomerInformation').companyAddress]"
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment