/azure-quickstart-templates

Azure Quickstart Templates

Primary LanguageShellMIT LicenseMIT

Azure Resource Manager QuickStart Templates

Contributing guide

This is a repo that contains all the currently available Azure Resource Manager templates contributed by the community. These templates are indexed on Azure.com and available to view here http://azure.microsoft.com/en-us/documentation/templates/

To make sure your template is added to Azure.com index, please follow these guidelines. Any templates that are out of compliance will be added to the blacklist and not be indexed on Azure.com

  1. Every template must be contained in its own folder. Name this folder something that describes what your template does. Usually this naming pattern looks like appName-osName
  2. The template file must be named azuredeploy.json
  3. The template folder must host the scripts that are needed for successful template execution
  4. The template folder must contain a metadata.json file to allow the template to be indexed on Azure.com
  • Guidelines on the metadata file below
  1. Include a Readme.md file that explains how the template works
  2. Template parameters should follow camelCasing
  3. Every parameter in the template must have the description specified using the metadata property. This looks like below
"newStorageAccountName": {
      "type": "string",
      "metadata": {
          "description": "The name of the new storage account created to store the VMs disks"
      }
}

See the starter template here for more information on passing validation

metadata.json file

Here are the required parameters for a valid metadata.json file

To be more consistent with the Visual Studio and Gallery experience we're updating the metadata.json file structure. The new structure looks like below

{
  "itemDisplayName": "",
  "description": "",
  "summary": "",
  "githubUsername": "",
  "dateUpdated": "<e.g. 2015-12-20>"
}

The metadata.json file will be validated using these rules

itemDisplayName

  • Cannot be more than 60 characters

description

  • Cannot be more than 1000 characters
  • Cannot contain HTML
  • This is used for the template description on the Azure.com index template details page

summary

  • Cannot be more than 200 characters
  • This is shown for template description on the main Azure.com template index page

githubUsername

  • Username must be the same as the username of the author submitting the Pull Request
  • This is used to display template author and Github profile pic in the Azure.com index

dateUpdated

  • Must be in yyyy-mm-dd format.
  • The date must not be in the future to the date of the pull request

Good practice

  • It is a good practice to pass your template through a JSON linter to remove extraneous commas, paranthesis, brackets that may break the "Deploy to Azure" experience

Starter template

A starter template is provided here for you to follow

101 templates

These are simple example templates with single actions for common requirements.

| Type | # | Author | Template Name | Description | |:------|:------|:-----------------|:--------------------------------| :---------------| :---------------| | 101 | 1 | mahthi | Deploy an Availability Set | This template allows you to create an Availability Set in your subscription.| | 101 | 2 | mahthi | Deploy a Load Balancer with an Inbound NAT Rule | This template allows you to create a load balancer with NAT rule in your subscription.| | 101 | 3 | mahthi | Deploy a Virtual Network | This template allows you to deploy a Virtual Network. | | 101 | 4 | mahthi | Deploy a Simple Virtual Machine from an Image | This template allows you to deploy a Simple Virtual Machines from an Image. | | 101 | 5 | mahthi | Create a Network Interface in a Virtual Network and associate it with a Public IP | This template creates a simple Network Interface in a Virtual Network and attaches a Public IP Address to it. | | 101 | 6 | mahthi | Deploy a Virtual Machine with Custom Data | This template allows you to deploy a Virtual Machines by passing Custom Data to the VM. | | 101 | 7 | singhkay | Create a key Vault | This template creates a Key Vault | | 101 | 8 | mahthi | Deploy a Virtual Machine from a User Image | This template allows you to create a Virtual Machines from a User image. Prerequisite - The Storage Account with the User Image VHD should already exist in the same resource group. | | 101 | 9 | manavis | Assign RBAC BuiltInRoles to an Existing Resource Group | This template assigns Owner, Reader or Contributor access to an existing resource group. | | 101 | 10 | kenazk | Create an Availability Set with 3 FDs configured | This template snippet creates an Availability Set with 3 FDs | | 101 | 11 | singhkay | Create a network Security Group | This template creates a Network Security Group| | 101 | 12 |kenazk | Create a VM from a Windows Image with 4 Empty Data Disks | Create a VM from a Windows Image with 4 Empty Data Disks| | 101 | 13 | kenazk | Linux VM with Empty Data Disk | This template creates a Linux VM with a new empty data disk. | | 101 | 14 | ggalow | Create a public IP with DNS Name | Create a public IP with DNS Name | | 101 | 15 | ManaviS | RBAC - Grant Built In Role Access for an existing VM in a Resource Group | RBAC - Grant Built In Role Access for an existing VM in a Resource Group |

201 templates

These are more complex example templates with single actions for more advanced requirements.

| Type | # | Author | Template Name | Description | |:------|:------|:-----------------|:--------------------------------| :---------------| :---------------| | 201 | 1 | singhkay | Discover a VMs Private IP Dynamically | This templates discovers a private ip of another VM dynamically| | 201 | 2 | mahthi | Deploy 2 Windows VMs under Availability Set with NAT Rules through Load balancer | This template allows you to create 2 Windows Virtual Machines in an Availability Set and configure NAT rules through a load balancer. We also use the resource loops capability to create the network interfaces and virtual machines | | 201 | 3 | ypitsch | Deploy 2 Windows VMs under a load balancer and configure a LB rule | This template allows you to create 2 Windows Virtual Machines in an under a Load Balancer, configure LB rules for load balancing and NAT rules for RDP Access to each VM. We also use the resource loops capability to create the network interfaces and virtual machines. | | 201 | 4 | singhkay | Create a VM referencing a VNET in a different Resource Group | This template creates a VM in a VNET which is in a different Resource Group. You'll need to have the VNET created before running this template and pass the VNET name and its resource group name as input to this parameter. | | 201 | 5 | singhkay | Create a VM and install a certificate referenced from an Azure Key Vault | This template creates a VM and installs a certificate from the Azure Key Vault on the Virtual Machine. The template expects the Key Vault Name and the certificate URL of the certificate in Key Vault. | | 201 | 6 | mahthi | Execute Dependent script extensions to Configure and Install Mongo DB on a Ubuntu Virtual Machine | This template deploys Configures and Installs Mongo DB on a Ubuntu Virtual Machine in two separate scripts. This template is a sample that showcases how to express dependencies between two scripts running on the same virtual machine.| | 201 | 7 | singhkay | Create 2 VMs in a Availability Set with 2 FDs without resource loops | This template allows you to create 2 VMs in an Availabiltiy Set with 2 Fault Domains without resource loops | | 201 | 8 | singhkay | Create a VM from a specialized VHD disk | This template creates a VM from a specialized VHD | | 201 | 9 | narayan | Create a virtual Network with DMZ Subnet | Virtual Network with DMZ Subnet | | 201 | 10 | ypitsch | 2 VMs in a VNET with an Internal Load Balancer and Load Balancer rules | 2 VMs in a VNET with an Internal Load Balancer and Load Balancer rules | | 201 | 11 | ManaviS | RBAC - Grant Built In Role Access for multiple existing VMs in a Resource Group | RBAC - Grant Built In Role Access for multiple existing VMs in a Resource Group |

General Workloads

You can deploy the template to Azure by clicking the "Deploy to Azure" button below next to each template.

| Type | # | Author | Template Name | Description | |:------|:------|:-----------------|:--------------------------------| :---------------| :---------------| | APP | 1 | singhkay | VM DSC Extension IIS Server | This template allows you to deploy a VM with with a DSC extension that sets up an IIS server | | DEV | 2 | coreysa | Deploy from DockerHub | This template allows you to deploy a Docker container from DockerHub using Compose. | | DEV | 3 | coreysa | Deploy Ubuntu Azure Dev VM | This template deploys an Ubuntu VM with the Azure Dev tools installed, which includes node. This executes a bash script pulled from GitHub. | | DEV | 4 | coreysa | Deploy from DockerHub (Simple Template) | This template allows you to deploy a Docker container from DockerHub using Compose with a very small amount of parameters (simple). | | 201 | 5 | coreysa | Deploy an Ubuntu VM with an additional sudo user | The purpose of this script is to show how to execute a custom script with parameters passed throguh the template that will create an additional user with sudo access. The value of the sample is to show how to pass template parameter based input into a bash Linux script.| | DEV | 6 | paigeliu | Deploy a 3 node Percona XtraDB Cluster | Deploy a 3 node MySQL HA Percona XtraDB Cluster on CentOS 6.5 or Ubuntu 12.04. Each node has 2 disks stripped, and the cluster can be accessed through a load balancer. | | DEV | 7 |gbowerman | Deploy LAMP app on Ubuntu | This template uses the Azure Linux CustomScript extension to deploy a LAMP application by creating an Ubuntu VM, doing a silent install of MySQL, Apache and PHP, then creating a simple PHP script.| | DEV | 8 | snallami | VM-Ubuntu - Tomcat and Open JDK installation | This template allows you to create a Ubuntu VM with OpenJDK and Tomcat.| | 201 | 9 | mahthi | Deploy 'N' Virtual Machines in a Single Click | This template allows you to deploy 'n' virtual machines in a Single Click. | | DEV | 10 | mahthi | Install Mongo DB on CentOS Virtual Machine | This template deploys Mongo DB on CentOS Virtual Machine. | | DEV | 11 | mahthi | Install Mongo DB on Ubuntu Virtual Machine | This template deploys Mongo DB on Ubuntu Virtual Machine. | | DEV | 12 | singhkay | Create a Zookeeper cluster | This template deploys a 3-node Zookeeper cluster on Ubuntu Virtual Machines. | | DEV | 13 | gbowerman | Deploy an Apache webserver on Ubuntu | This template uses the Azure Linux CustomScript extension to deploy an Apache web server. The deployment template creates an Ubuntu VM, installs Apache2 and creates a demo HTML file. | | DEV | 14 | kundanap | Bootstrap a Ubuntu VM with Chef Agent with Json paramters | This templates provisions a Ubuntu VM and bootstraps Chef Client on it by taking only json parameters.| | DEV | 15 | tomconte | Deploy a single-VM WordPress to Azure | This template deploys a complete LAMP stack, then installs and initializes WordPress.Once the deployment is finished, you need to go to http://fqdn.of.your.vm/wordpress/ to finish the configuration, create an account, and get started with WordPress. | | APP | 16 | simongdavies | This template creates an Azure VM with AD | This template creates a new Azure VM, with a public IP address, load balancer and VNet, it configures the VM to be an AD DC for a new Forest. | | 201 | 17 | mahthi | Deploy 'n' Virtual Machines from a user image using Resource Loops | This template allows you to create 'N' number of Virtual Machines from a User image based on the 'numberOfInstances' parameter specified during the template deployment. | | DEV | 18 | arsenvlad | Deploy 'n' Ubuntu VMs with memcached service and one Apache test VM | This template allows you to create multiple (based on the 'numberOfMemcachedInstances' parameter) Ubuntu 14.04 VMs in a private-only subnet and installs and configures memcached service on each VM. It also creates one publicly accessible Apache VM with a PHP test page to confirm that memcached is installed and accessible. | | DEV | 19 | thecaterminator | Deploy a Redis cluster with configurable number of nodes | This template deploys a Redis cluster on the Ubuntu virtual machines. The deployment topology is comprised of a customizable number of nodes joined into a cluster. The cluster is pre-configured with persistence and other optimizations as per best practices. | | DEV | 20 | anweiss | Deploy an Ubuntu VM with Drone CI. | This template provisions an Ubuntu Linux VM on Azure and bootstraps it with the latest release of the Drone continuous integration toolset. | | APP | 21 | justintian | Create HPC Cluster on Azure | This template provisions an HPC Pack Cluster on Azure | | 101 | 22 | singhkay | Windows VM with Anti-Malware extension | This template creates a Windows VM with Anti-Malware extension| | APP | 23 | trentmswanson arsenvlad | PostgreSQL 9.3 on Ubuntu VMs | This template creates one master PostgreSQL 9.3 server with streaming-replication to multiple slave servers. | | 101 | 24 | singhkay | Create a standard Storage Account | This template creates a Storage Account| | 201 | 25 | trentmswanson | Create Ubuntu vm data disk raid0 | Create Ubuntu vm data disk raid0| | 101 | 26 | sung-msft | Create a Windows VM with Symantec Endpoint Protection extension enabled | Create a Windows VM with Symantec Endpoint Protection extension enabled| | APP | 27 | johndehavilland | Create an ElasticSearch cluster on Windows | Create an ElasticSearch cluster on Windows | | DEV | 28 | madhana | Deploy a Django app | Deploy a Django app | | DEV | 29 | paigeliu | Deploy a Gluster file system on CentOS | Deploy a N node gluster file system with a replication factor of 2. Each node has 2 disks stripped |