Skip to content
Azure Quickstart Templates
Branch: master
Clone or download
Pull request Compare This branch is 19872 commits behind Azure:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
100-starter-template-with-validation
101-application-gateway-public-ip-ssl-offload
101-application-gateway-public-ip
101-automation-runbook-getvms
101-azure-dns-new-zone
101-backup-protect-iaasvm
101-create-application-gateway
101-create-availability-set-3FDs
101-create-availability-set
101-create-backup-vault-policy
101-create-backup-vault
101-create-expressroute-circuit
101-create-internal-loadbalancer
101-create-key-vault
101-create-security-group
101-create-storage-account-premium
101-create-storage-account-standard
101-linux-vm-serial-output
101-loadbalancer-with-multivip
101-loadbalancer-with-nat-rule
101-logic-app-create
101-logic-app-sendgrid
101-networkinterface-with-publicip-vnet
101-public-ip-dns-name
101-rbac-builtinrole-resourcegroup
101-rbac-builtinrole-virtualmachine
101-redis-cache
101-simple-linux-vm
101-simple-windows-vm-data-disk
101-simple-windows-vm
101-tags-vm
101-two-subnets
101-virtual-network
101-vm-customdata
101-vm-from-user-image
101-vm-multiple-data-disk
101-vm-simple-linux-vm-data-disk
101-vm-sshkey
101-vm-user-image-data-disks
101-vm-with-rdp-port
101-webapp-with-golang
102-create-expressroute-circuit-private-peering
102-create-expressroute-circuit-public-peering
201-1-vm-loadbalancer-2-nics
201-2-vms-2-FDs-no-resource-loops
201-2-vms-internal-load-balancer
201-2-vms-loadbalancer-lbrules
201-2-vms-loadbalancer-natrules
201-alert-to-queue-with-logic-app
201-alert-to-slack-with-logic-app
201-alert-to-text-message-with-logic-app
201-api-app-gateway-existing
201-api-app-gateway-new
201-customscript-extension-azure-storage-on-ubuntu
201-customscript-extension-public-storage-on-ubuntu
201-dependency-between-scripts-using-extensions
201-discover-private-ip-dynamically
201-dsc-linux-azure-storage-on-ubuntu
201-dsc-linux-public-storage-on-ubuntu
201-expressroute-circuit-public-private-peering
201-list-storage-keys-windows-vm
201-logic-app-api-app-create
201-logic-app-custom-api
201-nsg-dmz-in-vnet
201-ospatching-extension-on-ubuntu
201-premium-storage-windows-vm
201-rbac-builtinrole-multipleVMs
201-redis-premium-cluster-diagnostics
201-redis-premium-persistence
201-redis-premium-vnet-cluster-diagnostics
201-reserved-ip
201-site-to-site-vpn
201-specialized-vm-in-existing-vnet
201-userdefined-routes-appliance
201-vm-different-rg-vnet
201-vm-domain-join
201-vm-from-specialized-vhd
201-vmaccess-on-ubuntu
201-web-app-github-deploy
201-web-app-sql-database
201-web-app-with-redis-cache
201-windows-vm-diagnostics-extension
201-winrm-windows-vm
301-2fe-lb80-rdp-1be-nsg-rdp
301-2fe-linux-lb80-ssh-1be-win-nsg-rdp-datadisk-ssd
301-expressroute-circuit-vnet-connection
301-multi-tier-service-networking
CentOS-2nics-lb-cluster
active-directory-new-domain-ha-2-dc
active-directory-new-domain
ansible-advancedlinux
anti-malware-extension-windows-vm
apache2-on-ubuntu-vm
app-service-environment-serviceplan-logicapp
apprenda60-express
apprenda60-small
arm-asm-s2s
bosh-setup
chef-extension-windows-vm
chef-json-parameters-ubuntu-vm
cisco-csr-1000v
cloudera-on-centos
coreos-with-fleet-multivm
couchbase-ansible
couchbase-on-ubuntu
create-hpc-cluster-custom-image
create-hpc-cluster-linux-cn
create-hpc-cluster
datastax-enterprise-marketplace
datastax-enterprise
datastax-on-ubuntu
deis-cluster-coreos
diskraid-ubuntu-vm
django-app
docker-ckan
docker-kibana-elasticsearch
docker-neo4j
docker-simple-on-ubuntu
docker-swarm-cluster-simple
docker-swarm-cluster
docker-wordpress-mysql
drone-ubuntu-vm
dsc-extension-azure-automation-pullserver
dsc-extension-iis-server-windows-vm
dsc-pullserver-to-win-server
elasticsearch
eset-vm-extension
github-enterprise
gluster-file-system
hdInsight-apache-spark
hdinsight-genomics-adam
hdinsight-linux-run-script-action
hdinsight-linux-ssh-password
hdinsight-linux-ssh-publickey
hdinsight-linux-with-edge-node
hdinsight-linux-with-hue-on-edge-node
hortonworks-on-centos
intel-lustre-clients-on-centos
jenkins-on-ubuntu
kafka-on-ubuntu
kafka-ubuntu-multidisks
lamp-app
marketplace-samples
mcafee-extension-windows-vm
memcached-multi-vm-ubuntu
mesos-swarm-marathon
minecraft-on-ubuntu
mongodb-high-availability
mongodb-on-centos
mongodb-on-ubuntu
multi-vm-chef-template-ubuntu-vm
mysql-ha-pxc
mysql-replication
nagios-on-ubuntu
node-mongodb-high-availability
octopusdeploy3-single-vm-windows
openjdk-tomcat-ubuntu-vm
postgresql-on-ubuntu
python-proxy-on-ubuntu
rds-deployment
redis-high-availability
resource-loop-vms-userimage
resource-loop-vms-vnet-aset
resource-loop-vms-vnet
scrapy-on-ubuntu
shared_scripts
sharepoint-server-farm-ha
sharepoint-three-vm
slurm
spark-on-ubuntu
spark-ubuntu-multidisks
sql-server-2014-alwayson-dsc
sqldb-django-on-ubuntu
sqlvm-provisioning-csp
symantec-extension-windows-vm
thinkbox-deadline
torque-cluster
ubuntu-desktop
umbraco-cms-webapp-redis-cache
vertx-openjdk-apache-mysql-on-ubuntu
visual-studio-dev-vm
visual-studio-vsobuildagent-vm
vm-d14-high-iops-32-data-disks
web-app-dsc-vm
windows-puppet-agent
windows-server-containers-preview
windows-vm-custom-script
windows-vm-push-certificate
wordpress-mysql-replication
wordpress-single-vm-ubuntu
xtremedata-dbx-cluster-centos
zookeeper-cluster-ubuntu-vm
.gitignore
CONTRIBUTING.md
LICENSE
README.md
breaking-change.md

README.md

Azure Resource Manager QuickStart Templates

Template index

A searchable template index is maintained at https://azure.microsoft.com/en-us/documentation/templates/

Contribution 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 or level-platformCapability (e.g. 101-vm-user-image)
  • Protip - Try to keep the name of your template folder short so that it fits inside the Github folder name column width.
  1. The template file must be named azuredeploy.json
  2. There should be be a parameters file name azuredeploy.parameters.json.
  • Please fill out the values for the parameters according to rules defined in the template (allowed values etc.), For parameters without rules, a simple "changeme" will do as the acomghbot only checks for sytactic correctness using the ARM Validate Template API
  1. The template folder must host the scripts that are needed for successful template execution
  2. 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. No need to include the parameters that the template needs. We can render this on Azure.com from the template.
  2. Template parameters should follow camelCasing
  3. Try to reduce the number of parameters a user has to enter to deploy your template. Make things that do not need to be globally unique such as VNETs, NICs, PublicIPs, Subnets, NSGs as variables.
  • If you must include a parameter, please include a default value as well. See the next rule for naming convention for the default values.
  1. Name variables using this scheme templateScenarioResourceName (e.g. simpleLinuxVMVNET, userRoutesNSG, elasticsearchPublicIP etc.) that describe the scenario rather. This ensures when a user browses all the resources in the Portal there aren't a bunch of resources with the same name (e.g. myVNET, myPublicIP, myNSG)
  2. Storage account names need to be lower case and can't contain hyphens (-) in addition to other domain name restrictions. These also need to be globally unique.
  3. Every parameter in the template must have the lower-case description tag 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

Best practices

  • 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. Try http://jsonlint.com/ or a linter package for your favorite editing environment (Atom, Sublime Text, Visual Studio etc.)
  • It's also a good idea to format your JSON for better readability. You can use a JSON formatter package for your local editor or format online using this link.

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

Starter template

A starter template is provided here for you to follow

Common errors from acomghbot

acomghbot is a bot designed to enforce the above rules and check the syntactic correctness of the template using the ARM Validate Template API. Below are some of the more cryptic error messages you might receive from the bot and how to solve these issues.

  • This error is received when the parameters file contains a parameter that is not defined in the template.

    The file azuredeploy.json is not valid. Response from ARM API: BadRequest - {"error":{"code":"InvalidTemplate","message":"Deployment template validation failed: 'The template parameters 'vmDnsName' are not valid; they are not present in the original template and can therefore not be provided at deployment time. The only supported parameters for this template are 'newStorageAccountName, adminUsername, adminPassword, dnsNameForPublicIP, windowsOSVersion, sizeOfDiskInGB'.'."}}
    
  • This error is received when a parameter in the parameter file has an empty value.

    The file azuredeploy.json is not valid. Response from ARM API: BadRequest - {"error":{"code":"InvalidTemplate","message":"Deployment template validation failed: 'The template resource '' at line '66' and column '6' is not valid. The name property cannot be null or empty'."}}
    
  • This error message is received when a value entered in the parameters file is different from the allowed values defined for the parameter in the tempalte file.

    The file azuredeploy.json is not valid. Response from ARM API: BadRequest - {"error":{"code":"InvalidTemplate","message":"Deployment template validation failed: 'The provided value for the template parameter 'publicIPAddressType' at line '40' and column '29' is not valid.'."}}
    
You can’t perform that action at this time.