Bird
Raised Fist0
Azurecloud~20 mins

ARM template parameters and variables in Azure - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
ARM Template Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding ARM Template Parameters

In an ARM template, what is the main purpose of parameters?

ATo define the output values after deployment
BTo store fixed values that never change in the template
CTo execute scripts during deployment
DTo define values that can be provided during deployment to customize resources
Attempts:
2 left
💡 Hint

Think about what you want to change each time you deploy the template.

❓ Configuration
intermediate
2:00remaining
Variable Usage in ARM Templates

Which option correctly defines a variable named storageAccountName that concatenates 'stor' with a parameter uniqueString?

A"variables": { "storageAccountName": "[concat('stor', parameters('uniqueString'))]" }
B"variables": { "storageAccountName": "[concat('stor', uniqueString)]" }
C"variables": { "storageAccountName": "[concat('stor', parameters['uniqueString'])]" }
D"variables": { "storageAccountName": "[concat('stor', parameters.uniqueString)]" }
Attempts:
2 left
💡 Hint

Remember the correct syntax to reference parameters inside variables uses parameters('name') or parameters['name'].

❓ Architecture
advanced
2:00remaining
Parameter and Variable Scope in Nested ARM Templates

You have a main ARM template that calls a nested template. Which statement is true about passing parameters and using variables in the nested template?

AParameters must be explicitly passed from the main template to the nested template; variables are local to each template.
BVariables defined in the main template are automatically available in the nested template.
CParameters and variables are shared globally across all nested templates without passing.
DVariables can be passed to nested templates but parameters cannot.
Attempts:
2 left
💡 Hint

Think about how data flows between templates during deployment.

❓ security
advanced
2:00remaining
Secure Parameter Usage in ARM Templates

Which parameter type should you use in an ARM template to securely accept a password without exposing it in deployment logs?

A"type": "string"
B"type": "secureString"
C"type": "password"
D"type": "secureObject"
Attempts:
2 left
💡 Hint

Consider how ARM templates handle sensitive data.

❓ service_behavior
expert
2:00remaining
Output Value Behavior with Variables in ARM Templates

Given this ARM template snippet, what will be the value of the output finalName after deployment?

{
  "parameters": {
    "prefix": { "type": "string", "defaultValue": "app" }
  },
  "variables": {
    "name": "[concat(parameters('prefix'), 'svc')]"
  },
  "outputs": {
    "finalName": {
      "type": "string",
      "value": "[variables('name')]"
    }
  }
}
Aappsvc
B${parameters('prefix')}svc
C[parameters('prefix')]svc
Dsvc
Attempts:
2 left
💡 Hint

Variables can use functions to combine parameter values.

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