Based on the exhibit, the team wants a readable, repeatable deployment definition stored in source control. Which approach should they use for the Azure resources?
Bicep is the best choice because it is a declarative Azure language that is easier to read and maintain than raw ARM JSON. It works well in source control, supports code review, and is commonly used to define repeatable infrastructure deployments.
Why this answer
Bicep is a domain-specific language (DSL) that provides a concise, declarative syntax for deploying Azure resources. It is designed to be more readable than ARM templates and can be stored in source control, enabling repeatable, version-controlled deployments. This directly meets the team's requirement for a readable, repeatable deployment definition.
Exam trap
The trap here is that candidates often confuse governance tools (Azure Policy) or operational scripts (runbooks) with infrastructure-as-code solutions, overlooking that Bicep is the native, declarative language designed specifically for repeatable Azure resource deployments.
How to eliminate wrong answers
Option A is wrong because Azure Policy is a governance tool that enforces compliance rules on existing resources, not a mechanism for defining and deploying infrastructure. Option C is wrong because runbooks in Azure Automation are primarily for process automation and orchestration tasks, not for declarative infrastructure deployment; they are typically written in PowerShell or Python and are less readable than Bicep templates for defining resources. Option D is wrong because a resource lock is a safeguard that prevents deletion or modification of resources, not a deployment definition or template.