Resources are the crux of writing ARM templates; without them, there is no point in writing a template. As we saw in the first two chapters, resources in Azure can be created in a number of different ways, including using portal, PowerShell scripts, REST APIs, and much more. However, the most important, and also DevOps-friendly, way to create an environment using a declarative language is through ARM templates. ARM templates make the entire process of creating and managing resources predictable and consistent.
Resources are quite unique, even within ARM templates. They have their own set of mandatory and optional properties. There are varying types of resources, and each one differs in how it's configured and whether it has nested resources.