The reference function is an advanced concept in ARM templates and one of the most important and useful functions. Before going into the reference function any further, let's get a bit deeper into the deployment process of ARM templates.
When an ARM template is submitted to Azure, the entire ARM template is read, parsed, and validated. During parsing, all expressions and functions are evaluated to generate the real values behind them and then use them to configure the resources. There are times when we need a value from a resource to configure another resource. For example, the SQL Server firewall rules require IP addresses of all virtual machines for whitelisting. During ARM template deployment, both virtual machines and Azure SQL resources will be provisioned, and as we know, dependsOn can be used between them to ensure that virtual machines are provisioned...