Bird
Raised Fist0
Azurecloud~5 mins

ARM template parameters and variables in Azure - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of parameters in an ARM template?
Parameters allow you to pass values into the ARM template when deploying. They make the template flexible and reusable by letting you customize settings without changing the template code.
Click to reveal answer
beginner
What are variables used for in an ARM template?
Variables store values that you want to reuse inside the template. They help avoid repeating the same value multiple times and can hold expressions or calculated values.
Click to reveal answer
intermediate
Can you change the value of a variable during deployment in an ARM template?
No, variables are fixed once the template starts deploying. They are evaluated at deployment time but cannot be changed dynamically during deployment.
Click to reveal answer
beginner
How do parameters improve the reusability of ARM templates?
By using parameters, you can deploy the same template with different values for each deployment, like different names or sizes, without editing the template itself.
Click to reveal answer
intermediate
Give an example of when to use a variable instead of a parameter in an ARM template.
Use a variable when you want to create a value based on parameters or other variables, like combining a resource name prefix with a unique ID, so you don’t have to pass it every time.
Click to reveal answer
What is the main difference between parameters and variables in an ARM template?
ABoth are used to accept input during deployment.
BVariables accept input during deployment; parameters are set inside the template.
CParameters accept input during deployment; variables are set inside the template.
DBoth are fixed and cannot be changed.
Which ARM template element would you use to store a calculated value used multiple times?
AOutput
BParameter
CResource
DVariable
Can you change a parameter value after deployment starts?
ANo, parameters are fixed once deployment starts.
BOnly for variables, not parameters.
COnly if you redeploy the template.
DYes, anytime during deployment.
Why use parameters in ARM templates?
ATo hardcode values inside the template.
BTo allow customization without editing the template.
CTo store temporary values during deployment.
DTo output deployment results.
Which of these is NOT a valid use of variables in ARM templates?
AAccepting user input during deployment.
BHolding a repeated value used multiple times.
CStoring a resource name built from parameters.
DCalculating a value based on other variables.
Explain the roles of parameters and variables in an ARM template and how they help in deployment.
Think about what you can change when you deploy versus what is fixed inside the template.
You got /4 concepts.
    Describe a scenario where using a variable in an ARM template is better than using a parameter.
    Consider when you want to create a value from other values instead of asking the user to provide it.
    You got /4 concepts.

      Practice

      (1/5)
      1.

      What is the main purpose of parameters in an ARM template?

      easy
      A. To define the resources to deploy
      B. To allow input values when deploying the template
      C. To store fixed values inside the template
      D. To specify deployment location only

      Solution

      1. Step 1: Understand parameters role

        Parameters let users provide input values at deployment time, making templates flexible.
      2. Step 2: Differentiate from variables

        Variables store fixed or computed values inside the template, not input values.
      3. Final Answer:

        To allow input values when deploying the template -> Option B
      4. Quick Check:

        Parameters = input values [OK]
      Hint: Parameters accept inputs during deployment, variables do not [OK]
      Common Mistakes:
      • Confusing parameters with variables
      • Thinking parameters define resources
      • Assuming parameters are fixed values
      2.

      Which of the following is the correct syntax to declare a variable named storageAccountName in an ARM template?

      {
        "variables": {
          "storageAccountName": "myStorage"
        }
      }
      easy
      A. "resources": { "storageAccountName": "myStorage" }
      B. "parameters": { "storageAccountName": "myStorage" }
      C. "variables": { "storageAccountName": "myStorage" }
      D. "outputs": { "storageAccountName": "myStorage" }

      Solution

      1. Step 1: Identify variable declaration section

        Variables are declared inside the "variables" section as key-value pairs.
      2. Step 2: Match syntax with example

        The example shows "variables": { "storageAccountName": "myStorage" }, which matches "variables": { "storageAccountName": "myStorage" }.
      3. Final Answer:

        "variables": { "storageAccountName": "myStorage" } -> Option C
      4. Quick Check:

        Variables declared under "variables" [OK]
      Hint: Variables go inside "variables" block, not parameters or resources [OK]
      Common Mistakes:
      • Putting variables inside parameters
      • Confusing variables with outputs
      • Using wrong JSON section names
      3.

      Given this ARM template snippet, what will be the value of variables('fullName')?

      {
        "parameters": {
          "firstName": { "type": "string", "defaultValue": "John" },
          "lastName": { "type": "string", "defaultValue": "Doe" }
        },
        "variables": {
          "fullName": "[concat(parameters('firstName'), ' ', parameters('lastName'))]"
        }
      }
      medium
      A. parameters('firstName') parameters('lastName')
      B. JohnDoe
      C. [concat(parameters('firstName'), ' ', parameters('lastName'))]
      D. John Doe

      Solution

      1. Step 1: Understand concat function in variables

        The variable "fullName" uses concat to join firstName, a space, and lastName.
      2. Step 2: Substitute default parameter values

        firstName = "John", lastName = "Doe", so concat("John", " ", "Doe") = "John Doe".
      3. Final Answer:

        John Doe -> Option D
      4. Quick Check:

        concat with space joins names [OK]
      Hint: concat joins strings; default parameters fill in values [OK]
      Common Mistakes:
      • Taking concat as literal string
      • Ignoring space between names
      • Confusing parameters with variables
      4.

      Identify the error in this ARM template snippet:

      {
        "parameters": {
          "location": { "type": "string" }
        },
        "variables": {
          "region": "parameters('location')"
        }
      }
      medium
      A. Missing square brackets around the parameter reference in variable
      B. Variable names cannot be 'region'
      C. Parameter type must be 'securestring' to use in variables
      D. Variables cannot reference parameters

      Solution

      1. Step 1: Check variable referencing syntax

        Variables referencing parameters must use expression syntax with square brackets: "[parameters('location')]".
      2. Step 2: Identify missing brackets

        The variable "region" is assigned "parameters('location')" as a string, not an expression.
      3. Final Answer:

        Missing square brackets around the parameter reference in variable -> Option A
      4. Quick Check:

        Parameter references need [ ] in variables [OK]
      Hint: Use [parameters('name')] inside variables, not plain strings [OK]
      Common Mistakes:
      • Omitting square brackets for expressions
      • Thinking variables can't use parameters
      • Wrong parameter types for variables
      5.

      You want to create an ARM template that deploys a storage account with a name based on a parameter prefix and a variable uniqueString. Which is the best way to combine them in the template?

      {
        "parameters": {
          "prefix": { "type": "string" }
        },
        "variables": {
          "uniqueString": "[uniqueString(resourceGroup().id)]"
        },
        "resources": [
          {
            "type": "Microsoft.Storage/storageAccounts",
            "name": "???",
            "apiVersion": "2022-09-01",
            "location": "[resourceGroup().location]"
          }
        ]
      }

      Choose the correct expression to use for the storage account name property.

      hard
      A. "[concat(parameters('prefix'), variables('uniqueString'))]"
      B. "parameters('prefix') + variables('uniqueString')"
      C. "[parameters('prefix') variables('uniqueString')]"
      D. "concat(parameters.prefix, variables.uniqueString)"

      Solution

      1. Step 1: Understand ARM template expression syntax

        Expressions must be inside square brackets and use functions like concat() to join strings.
      2. Step 2: Check correct usage of parameters and variables

        Use parameters('name') and variables('name') inside concat() within brackets.
      3. Step 3: Evaluate options

        "[concat(parameters('prefix'), variables('uniqueString'))]" uses correct syntax: "[concat(parameters('prefix'), variables('uniqueString'))]".
      4. Final Answer:

        "[concat(parameters('prefix'), variables('uniqueString'))]" -> Option A
      5. Quick Check:

        Use [concat(parameters('x'), variables('y'))] for combined names [OK]
      Hint: Use [concat(parameters('x'), variables('y'))] for combined strings [OK]
      Common Mistakes:
      • Using + instead of concat inside brackets
      • Omitting square brackets for expressions
      • Wrong syntax for parameters or variables
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard