Programming the template
In our template, we can discover two needs:
There is a convention that is required to be followed while naming. All the resources share a common naming pattern, typically the project name.
For multitenant projects, or projects that share the same architecture, the template is useful for more than one project and one requirement can be rewriting the template in such a way that we can reuse it with the minimal changes.
To support these needs, ARM templates implement two features. The first one is the presence of two other objects on the JSON ARM template: variables and parameters. Variables are specific key/value pairs to be referenced in other parts of the template. Parameters are key/value pair containers, like variables, with special features to be initialized from outside the template, using the New-AzureRmResourceGroupDeployment
command, optional parameters, or the template parameter file that can be supplied with the template.
Variables and parameters are referenced...