{"title":"Azure Reusable ARM Templates – Ready-to-Deploy Infrastructure Solutions","description":"\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis Collection provides a Library of Ready-to-use Azure Resource Manager (ARM) Templates designed to simplify and accelerate Infrastructure Deployment. Each Template is delivered as a complete, Structured Solution that can be used immediately, with no additional setup required.\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eKey Benefits\u003c\/strong\u003e\u003cbr\u003eDeploy Azure Infrastructure quickly and reliably \u003cbr\u003eNo need to build or troubleshoot ARM Templates \u003cbr\u003eConsistent Structure across All Templates \u003cbr\u003eDesigned for immediate use with Minimal Configuration \u003cbr\u003eReduces Deployment Errors and Saves Time \u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow to Use\u003c\/strong\u003e\u003cbr\u003eDownload any Template Package from this Collection, extract the Files, and run the Included Deployment Script. Each template is designed to work out of the box, requiring minimal input.\u003c\/p\u003e","products":[{"product_id":"azure-virtual-machine-arm-template","title":"Azure Virtual Machine ARM Template","description":"\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis package provides a \u003cstrong\u003eReusable Azure Resource Manager \u003c\/strong\u003e(\u003cstrong\u003eARM\u003c\/strong\u003e) \u003cstrong\u003eTemplate\u003c\/strong\u003e for deploying a complete Windows Server Virtual Machine Environment, including Networking Components. The template is designed to be simple, customizable, and ready for immediate use.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003cbr\u003eThis ARM Template deploys the following Azure resources:\u003cbr\u003eVirtual Network (vNet)\u003cbr\u003eSubnet\u003cbr\u003ePublic IP Address\u003cbr\u003eNetwork Interface (NIC)\u003cbr\u003eWindows Server Virtual Machine (Windows Server 2022 Datacenter)\u003cbr\u003eAll resources are deployed within a single Resource Group and configured to work together automatically.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003eTo deploy this solution, you will need:\u003cbr\u003eActive Azure subscription\u003cbr\u003eAccess to Azure Portal or Azure Cloud Shell\u003cbr\u003eAzure PowerShell installed (optional if using Cloud Shell)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json\u003c\/span\u003e\u003cbr\u003eContains the ARM template defining the infrastructure\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e\u003cbr\u003eContains configurable values used during deployment\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1\u003c\/span\u003e\u003cbr\u003ePowerShell script to automate deployment\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eReadMe.md\u003c\/span\u003e Deployment Instructions\u003cbr\u003eYou can deploy this template using Azure Cloud Shell or local PowerShell.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOption 1: \u003c\/strong\u003eAzure Cloud Shell\u003cbr\u003eOpen Azure Portal\u003cbr\u003eLaunch Cloud Shell (PowerShell)\u003cbr\u003eUpload all files in this package\u003cbr\u003eRun the following command:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\\deploy.ps1 -resourceGroupName \"YourResourceGroupName\"\u003c\/span\u003e\u003cbr\u003eEnter a secure administrator password when prompted\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOption 2:\u003c\/strong\u003e Local PowerShell\u003cbr\u003eOpen PowerShell\u003cbr\u003eNavigate to the folder containing the files\u003cbr\u003eRun:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\\deploy.ps1 -resourceGroupName \"YourResourceGroupName\"\u003c\/span\u003e\u003cbr\u003eEnter a secure administrator password when prompted\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eParameter Configuration\u003c\/strong\u003e\u003cbr\u003eYou can modify the following values in \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e:\u003cbr\u003evmName\u003cbr\u003eadminUsername\u003cbr\u003evnetName\u003cbr\u003esubnetName\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(255, 42, 0);\"\u003eDo not store a real password in parameters.json. \u003c\/span\u003e\u003cbr\u003eThe deployment script will securely prompt for it.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eImportant Notes\u003c\/strong\u003e\u003cbr\u003eThe administrator password must meet Azure complexity requirements\u003cbr\u003eDeployment will create billable resources if executed without validation mode\u003cbr\u003eUse -WhatIf in PowerShell to preview changes before deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOutputs\u003c\/strong\u003e\u003cbr\u003eAfter deployment, the template will return:\u003cbr\u003eVirtual Machine Name\u003cbr\u003ePublic IP resource name\u003cbr\u003eCustomization\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis template can be modified to:\u003c\/strong\u003e\u003cbr\u003eChange VM size\u003cbr\u003eAdjust network address space\u003cbr\u003eAdd additional resources such as Network Security Groups\u003cbr\u003eIntegrate with Azure Key Vault\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSupport\u003c\/strong\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003cbr\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003esupport@ITCloudAcademy.net\u003c\/span\u003e\u003cbr\u003eEmail: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cbr\u003eWebsite: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSupport Hours:\u003c\/strong\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42829372293218,"sku":null,"price":15.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates.png?v=1777044172"},{"product_id":"azure-bastion-arm-template-ready-to-deploy-reusable-solution","title":"Azure Bastion ARM Template – Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAzure Bastion ARM Template – Ready-to-Deploy Solution\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis deployment package provides a fully configured Azure Bastion environment using Azure Resource Manager (ARM) templates.\u003cbr\u003eThe solution deploys a Virtual Network with a dedicated Bastion subnet, a Public IP address, and an Azure Bastion host, enabling secure browser-based connectivity to virtual machines\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003cbr\u003e- Azure Virtual Network\u003cbr\u003e- AzureBastionSubnet (Required Subnet)\u003cbr\u003e- Azure Public IP (Standard, Static)\u003cbr\u003e- Azure Bastion Host\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e\u003cstrong\u003etemplate.json  \u003c\/strong\u003e\u003c\/span\u003e\u003cbr\u003eARM template defining the VNet, Public IP, and Bastion Host\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e\u003cstrong\u003eparameters.json  \u003c\/strong\u003e\u003c\/span\u003e\u003cbr\u003eParameter file used to Customize Deployment Values\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e\u003cstrong\u003edeploy.ps1  \u003c\/strong\u003e\u003c\/span\u003e\u003cbr\u003ePowerShell script for validation, What-If, and deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eTo use this template, you will need:\u003cbr\u003e- An active Azure subscription\u003cbr\u003e- Access to Azure Portal or Azure Cloud Shell\u003cbr\u003e- Azure PowerShell (optional if using Cloud Shell)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eImportant Design Requirements\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eAzure Bastion has strict requirements that are enforced in this template:\u003cbr\u003e- Subnet name must be exactly: AzureBastionSubnet\u003cbr\u003e- Subnet size must be at least \/27\u003cbr\u003e- Public IP must be Standard SKU\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow to Deploy\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 1: Update Parameters\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eOpen **\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e** and update:\u003cbr\u003e- vnetName  \u003cbr\u003e  Name of the Virtual Network\u003cbr\u003e- bastionName  \u003cbr\u003e  Name of the Bastion Host\u003cbr\u003e- publicIpName  \u003cbr\u003e  Name of the Public IP resource\u003cbr\u003e- location  \u003cbr\u003e  Example: eastus\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2: Upload Files (Cloud Shell)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eUpload:\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- template.json  \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- parameters.json  \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- deploy.ps1  \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Run Deployment Script\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eThe script supports three modes:\u003cbr\u003eValidate (recommended first)\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e```powershell\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\\deploy.ps1 -resourceGroupName RG-ARM-TEMPLATES -mode Validate\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeployment Behavior\u003c\/strong\u003e\u003cbr\u003eThe script performs:\u003cbr\u003eResource group validation or creation\u003cbr\u003eTemplate validation or preview (based on mode)\u003cbr\u003eOptional deployment\u003cbr\u003eExpected Result\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAfter deployment:\u003c\/strong\u003e\u003cbr\u003eVirtual Network is created\u003cbr\u003eAzureBastionSubnet is configured\u003cbr\u003ePublic IP is provisioned\u003cbr\u003eBastion Host is deployed\u003cbr\u003eImportant Notes\u003cbr\u003eBastion Usage\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAzure Bastion provides:\u003c\/strong\u003e\u003cbr\u003eSecure RDP and SSH access via browser\u003cbr\u003eNo need for public IPs on virtual machines\u003cbr\u003eNo direct exposure of VMs to the internet\u003cbr\u003eCost Consideration\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAzure Bastion is a billable service:\u003c\/strong\u003e\u003cbr\u003eIt incurs continuous cost once deployed\u003cbr\u003ePricing varies by region and SKU\u003cbr\u003eDeploy only when required.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eNetworking Considerations\u003c\/strong\u003e\u003cbr\u003eBastion must reside in its own dedicated subnet\u003cbr\u003eThe subnet cannot be used for other resources\u003cbr\u003eVirtual machines must be in the same VNet or peered VNets\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis package provides a reusable Azure Bastion deployment solution \u003cbr\u003ewith correct subnet configuration, proper dependency handling, \u003cbr\u003eand a production-ready network access design for secure remote connectivity.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSupport\u003c\/strong\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/p\u003e\n\u003cp\u003eITCloudAcademy Support Team\u003cbr\u003eEmail:\u003cspan\u003e \u003c\/span\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003eet\u003cbr\u003eEmail: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cbr\u003eWebsite:\u003cspan\u003e \u003c\/span\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSupport Hours:\u003c\/strong\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\" style=\"color: rgb(43, 0, 255);\"\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42830701101154,"sku":null,"price":15.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_9ec9175e-a887-4d3d-a5c0-1230d71659d4.png?v=1777089341"},{"product_id":"azure-storage-account-arm-template-ready-to-deploy-reusable-solution","title":"Azure Storage Account ARM Template – Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\" width=\"260\" height=\"95\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis deployment package provides a fully configured Azure Storage Account using Azure Resource Manager (ARM) templates.\u003cbr\u003eThe solution is designed for fast, reliable, and repeatable deployment with minimal configuration required.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e- Azure Storage Account (StorageV2)\u003cbr\u003e- Secure configuration:\u003cbr\u003e  - HTTPS only enabled\u003cbr\u003e  - Minimum TLS version 1.2\u003cbr\u003e  - Public blob access disabled\u003cbr\u003e- Configurable SKU (Standard_LRS by default)\u003cbr\u003e- Configurable location\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- template.json  \u003c\/span\u003e\u003cbr\u003e  ARM template defining the infrastructure\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- parameters.json  \u003c\/span\u003e\u003cbr\u003e  Parameter file used to customize deployment values\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- deploy.ps1  \u003c\/span\u003e\u003cbr\u003e  PowerShell script to automate deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eTo deploy this solution, you will need:\u003cbr\u003e- An active Azure subscription\u003cbr\u003e- Access to Azure Portal or Azure Cloud Shell\u003cbr\u003e- Azure PowerShell (not required if using Cloud Shell)\u003cbr\u003eNo additional development tools or complex setup are required.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow to Deploy\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eStep 1: Update Parameters\u003c\/p\u003e\n\u003cp\u003eOpen **\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e** and update the following values:\u003c\/p\u003e\n\u003cp\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003estorageAccountName  \u003c\/span\u003e\u003cbr\u003e  Must be globally unique, lowercase, 3–24 characters\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- location  \u003c\/span\u003e\u003cbr\u003e  Example: eastus\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- skuName  \u003c\/span\u003e\u003cbr\u003e  Example: Standard_LRS\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2: Upload Files (Cloud Shell)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eUpload the following files to Azure Cloud Shell:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- template.json\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- parameters.json\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- deploy.ps1\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Run Deployment\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eExecute the deployment script:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e```powershell\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\\deploy.ps1 -resourceGroupName RG-ARM-TEMPLATES\u003c\/span\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSupport\u003c\/strong\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/p\u003e\n\u003cp\u003eITCloudAcademy Support Team\u003cbr\u003eEmail:\u003cspan\u003e \u003c\/span\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003eet\u003cbr\u003eEmail: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cbr\u003eWebsite:\u003cspan\u003e \u003c\/span\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSupport Hours:\u003c\/strong\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\" width=\"257\" height=\"64\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"font-family: 'Univers Condensed', sans-serif; color: rgb(43, 0, 255);\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42830751596642,"sku":null,"price":15.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_f8a4e58e-36ad-4d11-9f58-a084ae6db176.png?v=1777094575"},{"product_id":"azure-app-service-arm-template-ready-to-deploy-reusable-solution","title":"Azure App Service ARM Template – Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cstrong\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eThis deployment package provides a fully configured Azure App Service environment using Azure Resource Manager (ARM) templates.\u003c\/p\u003e\n\u003cp\u003eThe solution deploys both an App Service Plan and a Web App, enabling fast, consistent, and repeatable application hosting setup.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e- Azure App Service Plan (Linux)\u003cbr\u003e- Azure Web App\u003cbr\u003e- Configurable runtime stack (Node.js, .NET, etc.)\u003cbr\u003e- HTTPS-only configuration for secure access\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json  \u003c\/span\u003e\u003cbr\u003e  ARM template defining the App Service Plan and Web App\u003c\/p\u003e\n\u003cp\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json \u003c\/span\u003e \u003cbr\u003e  Parameter file used to customize deployment values\u003c\/p\u003e\n\u003cp\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1  \u003c\/span\u003e\u003cbr\u003e  PowerShell script for validation and deployment preview\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eTo use this template, you will need:\u003c\/p\u003e\n\u003cp\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAn active Azure subscription\u003c\/span\u003e\u003cbr\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAccess to Azure Portal or Azure Cloud Shell\u003c\/span\u003e\u003cbr\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAzure PowerShell (optional if using Cloud Shell)\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(255, 42, 0);\"\u003e\u003cstrong\u003eImportant Note About Deployment\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis template uses the Free tier (F1) by default.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eSome Azure subscriptions or regions may have:\u003c\/p\u003e\n\u003cp\u003e- No available quota for Free App Service tier\u003cbr\u003e- Restrictions that prevent deployment, even in What-If mode\u003c\/p\u003e\n\u003cp\u003eBecause of this, the provided deployment script runs in **safe validation mode only**.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow to Deploy\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 1: Update Parameters\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eOpen **parameters.json** and update:\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- appServicePlanName  \u003c\/span\u003e\u003cbr\u003e  Name of the App Service Plan\u003c\/p\u003e\n\u003cp\u003e-\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e webAppName  \u003c\/span\u003e\u003cbr\u003e  Must be globally unique\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- location  \u003c\/span\u003e\u003cbr\u003e  Example: eastus\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- skuName  \u003c\/span\u003e\u003cbr\u003e  Default: F1 (Free tier)  \u003cbr\u003e  Alternatives: B1, S1, etc. (paid tiers)\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- linuxFxVersion  \u003c\/span\u003e\u003cbr\u003e  Example: NODE|18-lts, DOTNETCORE|8.0\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2: Upload Files (Cloud Shell)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eUpload:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- template.json  \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- parameters.json  \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- deploy.ps1  \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Run Validation\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e```powershell\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\\deploy.ps1 -resourceGroupName RG-ARM-TEMPLATES\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeployment Behavior\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe script performs:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eResource group validation or creation\u003cbr\u003eWhat-If preview of resources\u003cbr\u003eSkips actual deployment due to potential quota limitations\u003cbr\u003eExpected Result\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAfter validation:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eApp Service Plan configuration is verified\u003cbr\u003eWeb App configuration is verified\u003cbr\u003eResource dependencies are confirmed\u003cbr\u003eIf You Want to Deploy\u003c\/p\u003e\n\u003cp\u003eTo deploy the resources, update:\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(255, 42, 0);\"\u003e\"skuName\": \"B1\"\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eThen run deployment manually:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eNew-AzResourceGroupDeployment -ResourceGroupName RG-ARM-TEMPLATES -TemplateFile template.json -TemplateParameterFile parameters.json\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003ePaid SKUs will incur Azure charges\u003cbr\u003e\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eNotes\u003c\/strong\u003e\u003cbr\u003eWeb App names must be globally unique\u003cbr\u003eHTTPS is enforced by default\u003cbr\u003eTemplate uses Linux-based App Service configuration\u003cbr\u003eRuntime stack is fully customizable\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eThis package provides a reusable Azure App Service deployment solution, enabling consistent and secure application hosting configuration while allowing flexibility for different environments and runtime requirements.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSupport\u003c\/strong\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/p\u003e\n\u003cp\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003esupport@ITCloudAcademy.net\u003c\/span\u003e\u003cbr\u003eEmail: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eWebsite:\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e \u003c\/span\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eSupport Hours:\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\" style=\"color: rgb(43, 0, 255);\"\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42830764376162,"sku":null,"price":15.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_50139b1b-3372-425c-8d92-136089fc317f.png?v=1777099304"},{"product_id":"azure-virtual-network-arm-template-ready-to-deploy-reusable-solution","title":"Azure Virtual Network ARM Template – Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cstrong\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis deployment package provides a fully configured Azure Virtual Network (VNet) using Azure Resource Manager (ARM) templates.\u003cbr\u003eThe solution is designed for fast, reliable, and repeatable deployment with minimal configuration required.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003cbr\u003e- Azure Virtual Network (VNet)\u003cbr\u003e- One Subnet (default)\u003cbr\u003e- Configurable address space and subnet range\u003cbr\u003e- Standard networking configuration suitable for most environments\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003cbr\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json \u003c\/span\u003e \u003cbr\u003e  ARM template defining the Virtual Network and subnet\u003c\/p\u003e\n\u003cp\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json  \u003c\/span\u003e\u003cbr\u003e  Parameter file used to customize deployment values\u003c\/p\u003e\n\u003cp\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1\u003c\/span\u003e  \u003cbr\u003e  PowerShell script to automate deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003eTo deploy this solution, you will need:\u003cbr\u003e- An active Azure subscription\u003cbr\u003e- Access to Azure Portal or Azure Cloud Shell\u003cbr\u003e- Azure PowerShell (not required if using Cloud Shell)\u003cbr\u003eNo additional tools or complex setup required.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow to Deploy\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 1: Update Parameters\u003c\/strong\u003e\u003cbr\u003eOpen **parameters.json** and update the following values:\u003cbr\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003evnetName \u003c\/span\u003e \u003cbr\u003e  Name of the Virtual Network\u003c\/p\u003e\n\u003cp\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003elocation\u003c\/span\u003e  \u003cbr\u003e  Example: eastus\u003c\/p\u003e\n\u003cp\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaddressPrefix \u003c\/span\u003e \u003cbr\u003e  Example: 10.0.0.0\/16\u003c\/p\u003e\n\u003cp\u003e-\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e subnetName\u003c\/span\u003e  \u003cbr\u003e  Example: default\u003c\/p\u003e\n\u003cp\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003esubnetPrefix\u003c\/span\u003e  \u003cbr\u003e  Example: 10.0.1.0\/24\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eImportant Networking Note\u003c\/strong\u003e\u003cbr\u003eThe subnet range must be within the VNet address space.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eExample:\u003c\/strong\u003e\u003cbr\u003e- VNet: 10.0.0.0\/16  \u003cbr\u003e- Subnet: 10.0.1.0\/24  \u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2: Upload Files (Cloud Shell)\u003c\/strong\u003e\u003cbr\u003eUpload the following files:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json  \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json  \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1  \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Run Deployment\u003c\/strong\u003e\u003cbr\u003eExecute:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e```powershell\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\\deploy.ps1 -resourceGroupName RG-ARM-TEMPLATES\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSupport\u003c\/strong\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003cbr\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003esupport@ITCloudAcademy.net\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eEmail: \u003c\/span\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cbr\u003eWebsite: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cbr\u003e\u003cstrong\u003eSupport Hours:\u003c\/strong\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003cbr\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42831189114978,"sku":null,"price":15.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_66734067-e0b0-46cc-bfaf-f72c2b8c7b38.png?v=1777126808"},{"product_id":"azure-key-vault-arm-template-ready-to-deploy-reusable-solution","title":"Azure Key Vault ARM Template – Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cstrong\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis deployment package provides a fully configured Azure Key Vault using Azure Resource Manager (ARM) templates.\u003cbr\u003eThe solution is designed for fast, secure, and repeatable deployment with minimal configuration required.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003cbr\u003e- Azure Key Vault\u003cbr\u003e- RBAC-enabled access control (modern security model)\u003cbr\u003e- Standard or Premium SKU support\u003cbr\u003e- Secure baseline configuration\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json  \u003c\/span\u003e\u003cbr\u003eARM template defining the Key Vault\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json \u003c\/span\u003e \u003cbr\u003eParameter file used to customize deployment values\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1  \u003c\/span\u003e\u003cbr\u003ePowerShell script to automate deployment\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003eTo deploy this solution, you will need:\u003cbr\u003e- An active Azure subscription\u003cbr\u003e- Access to Azure Portal or Azure Cloud Shell\u003cbr\u003e- Azure PowerShell (optional if using Cloud Shell)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow to Deploy\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eStep 1: Update Parameters\u003c\/strong\u003e\u003c\/span\u003e\u003cbr\u003eOpen **\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e** and update:\u003cbr\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003ekeyVaultName \u003c\/span\u003e \u003cbr\u003e  Must be Globally Unique (3–24 characters, letters\/numbers\/hyphens)\u003cbr\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003elocation  \u003c\/span\u003e\u003cbr\u003e  Example: eastus\u003cbr\u003e- \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eskuName  \u003c\/span\u003e\u003cbr\u003e  Options: Standard or Premium\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eStep 2: Upload Files (Cloud Shell)\u003c\/strong\u003e\u003c\/span\u003e\u003cbr\u003eUpload:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json  \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json  \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1  \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Run Deployment\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e```powershell\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\\deploy.ps1 -resourceGroupName RG-ARM-TEMPLATES\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeployment Process\u003c\/strong\u003e\u003cbr\u003eThe Script Performs:\u003cbr\u003eResource group validation or creation\u003cbr\u003eWhat-If preview (safe validation)\u003cbr\u003eDeployment of the Key Vault\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAfter deployment: \u003c\/strong\u003eExpected Result\u003cbr\u003eKey Vault is created successfully\u003cbr\u003eRBAC authorization is enabled\u003cbr\u003eConfiguration matches provided parameters\u003cbr\u003e\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eImportant Notes\u003c\/strong\u003e\u003cbr\u003eRBAC Access Model\u003cbr\u003eThis template uses:\u003cbr\u003eRBAC (Role-Based Access Control)\u003cbr\u003eNo access policies are configured.\u003cbr\u003eAfter deployment, you must assign permissions to access the Key Vault.\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis template uses:\u003c\/strong\u003e\u003cbr\u003eRBAC (Role-Based Access Control)\u003cbr\u003eNo access policies are configured.\u003cbr\u003eAfter deployment, you must assign permissions to access the Key Vault.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eExample:\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eNew-AzRoleAssignment `\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e-RoleDefinitionName \"Key Vault Administrator\" `\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e-Scope \/subscriptions\/\u0026lt;subscription-id\u0026gt;\/resourceGroups\/\u0026lt;rg-name\u0026gt;\/providers\/Microsoft.KeyVault\/vaults\/\u0026lt;keyvault-name\u0026gt; `\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e-ObjectId \u0026lt;your-object-id\u0026gt;\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eNaming Requirements\u003c\/strong\u003e\u003cbr\u003eKey Vault names must:\u003cbr\u003eBe Globally Unique\u003cbr\u003eBe between 3 and 24 characters\u003cbr\u003eContain Only Letters, Numbers, and Hyphens\u003cbr\u003e\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCost Note\u003c\/strong\u003e\u003cbr\u003eCreating a Key Vault has Minimal Cost\u003cbr\u003eCharges apply when storing Secrets, Keys, or Certificates\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis package provides a complete, reusable Azure Key Vault deployment solution with Secure Defaults, eliminating the need for manual configuration and reducing deployment complexity.\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSupport\u003c\/strong\u003e\u003cbr\u003eFor questions or Custom Template requests, please contact:\u003cbr\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003esupport@ITCloudAcademy.net\u003c\/span\u003e\u003cbr\u003eEmail: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cbr\u003eWebsite: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cbr\u003e\u003cstrong\u003eSupport Hours:\u003c\/strong\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\" style=\"color: rgb(43, 0, 255);\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/a\u003e\u003c\/span\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42831204581474,"sku":null,"price":15.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_e6dc0265-43a5-43fc-b346-42ade30ceb81.png?v=1777129415"},{"product_id":"azure-network-security-group-arm-template-ready-to-deploy-reusable-solution","title":"Azure Network Security Group ARM Template – Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cstrong\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis deployment package provides a fully configured Azure Network Security Group (NSG) using Azure Resource Manager (ARM) templates.\u003c\/p\u003e\n\u003cp\u003eThe solution is designed for fast, consistent, and repeatable deployment of network security rules with minimal configuration required.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e- Azure Network Security Group (NSG)\u003cbr\u003e- One inbound security rule (RDP by default)\u003cbr\u003e- Parameterized configuration for flexible rule customization\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json \u003c\/span\u003e \u003cbr\u003eARM template defining the NSG and security rule\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json  \u003c\/span\u003e\u003cbr\u003eParameter file used to customize deployment values\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1  \u003c\/span\u003e\u003cbr\u003ePowerShell script to automate deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003eTo deploy this solution, you will need:\u003cbr\u003e- An active Azure subscription\u003cbr\u003e- Access to Azure Portal or Azure Cloud Shell\u003cbr\u003e- Azure PowerShell (optional if using Cloud Shell)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow to Deploy\u003c\/strong\u003e\u003cbr\u003e\u003cstrong\u003eStep 1: Update Parameters\u003c\/strong\u003e\u003cbr\u003eOpen **parameters.json** and update the following values:\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- nsgName  \u003c\/span\u003e\u003cbr\u003e  Name of the Network Security Group\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- location  \u003c\/span\u003e\u003cbr\u003e  Example: eastus\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- securityRuleName  \u003c\/span\u003e\u003cbr\u003e  Example: Allow-RDP\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- sourceAddressPrefix  \u003c\/span\u003e\u003cbr\u003e  Source IP range (example: your public IP)\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- destinationAddressPrefix  \u003c\/span\u003e\u003cbr\u003e  Destination range (usually *)\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- destinationPortRange  \u003c\/span\u003e\u003cbr\u003e  Example: 3389 (RDP), 80 (HTTP), 443 (HTTPS)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eImportant Security Note\u003c\/strong\u003e\u003cbr\u003eThe default configuration allows inbound RDP from any source:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- sourceAddressPrefix = *\u003c\/span\u003e\u003cbr\u003eThis is intended for testing or demonstration purposes.\u003cbr\u003eFor production use, restrict access to specific IP addresses.\u003cbr\u003e\u003cstrong\u003eExample:\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- sourceAddressPrefix = 203.0.113.10\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2: Upload Files (Cloud Shell)\u003c\/strong\u003e\u003cbr\u003eUpload:\u003cbr\u003etemplate.json  \u003cbr\u003eparameters.json  \u003cbr\u003edeploy.ps1  \u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Run Deployment\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e```powershell\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\\deploy.ps1 -resourceGroupName RG-ARM-TEMPLATES\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeployment Process\u003c\/strong\u003e\u003cbr\u003eThe script performs:\u003cbr\u003eResource group validation or creation\u003cbr\u003eWhat-If preview (safe validation)\u003cbr\u003eDeployment of the NSG and security rule\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAfter deployment: Expected Result\u003c\/strong\u003e\u003cbr\u003eNetwork Security Group is created\u003cbr\u003eSecurity rule is applied\u003cbr\u003eConfiguration matches provided parameters\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eNotes\u003c\/strong\u003e\u003cbr\u003eThis template deploys only network security configuration\u003cbr\u003eNo compute resources are created\u003cbr\u003eNo cost is associated with NSG deployment\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis package provides a complete, reusable Azure NSG deployment solution that enables consistent security rule configuration while reducing manual setup and deployment errors.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eet\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eWebsite: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport Hours:\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42831208349794,"sku":null,"price":15.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_88b4d936-810a-4471-a9d7-e1b8027363a9.png?v=1777131105"},{"product_id":"azure-sql-database-arm-template-ready-to-deploy-reusable-solution","title":"Azure SQL Database ARM Template – Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis deployment Package provides a fully configured Azure SQL Environment using Azure Resource Manager (ARM) Templates.\u003c\/p\u003e\n\u003cp\u003eThe solution deploys a SQL Server (Logical Server), a SQL Database, and a Firewall Rule, enabling fast, secure, and repeatable Database provisioning.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003cbr\u003e- Azure SQL Server (logical server)\u003cbr\u003e- Azure SQL Database\u003cbr\u003e- Firewall rule allowing Azure services access\u003cbr\u003e- Secure configuration with TLS 1.2 enforced\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json  \u003c\/span\u003e\u003cbr\u003eARM template defining SQL Server, Database, and Firewall rule\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json  \u003c\/span\u003e\u003cbr\u003eParameter file used to customize deployment values\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1  \u003c\/span\u003e\u003cbr\u003ePowerShell script for validation, What-If, and deployment\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003eTo use this template, you will need:\u003cbr\u003e- An active Azure subscription\u003cbr\u003e- Access to Azure Portal or Azure Cloud Shell\u003cbr\u003e- Azure PowerShell (optional if using Cloud Shell)\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity Model\u003c\/strong\u003e\u003cbr\u003eThis template uses SQL Authentication with Secure Password handling:\u003cbr\u003e- Password is NOT stored in \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e\u003cbr\u003e- Password is entered at runtime\u003cbr\u003e- Password is handled as a Secure String\u003c\/p\u003e\n\u003cp\u003eHow to Deploy\u003cbr\u003e\u003cstrong\u003eStep 1: Update Parameters\u003c\/strong\u003e\u003cbr\u003eOpen **\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e** and update:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- sqlServerName\u003c\/span\u003e  \u003cbr\u003e  Must be globally unique\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- sqlDatabaseName  \u003c\/span\u003e\u003cbr\u003e  Name of the database\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- location  \u003c\/span\u003e\u003cbr\u003e  Example: eastus\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- administratorLogin \u003c\/span\u003e \u003cbr\u003e  SQL admin username\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- databaseSkuName  \u003c\/span\u003e\u003cbr\u003e  Default: Basic (Lowest Cost Tier)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2: Upload Files (Cloud Shell)\u003c\/strong\u003e\u003cbr\u003eUpload:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- template.json  \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- parameters.json  \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- deploy.ps1  \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Run Deployment Script\u003c\/strong\u003e\u003cbr\u003eThe script supports three modes:\u003cbr\u003eValidate (recommended first)\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e```PowerShell\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\\deploy.ps1 -resourceGroupName RG-ARM-TEMPLATES -mode Validate\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eImportant Notes\u003c\/strong\u003e\u003cbr\u003ePassword Handling\u003cbr\u003ePassword is required at runtime\u003cbr\u003ePassword is not stored in any file\u003cbr\u003ePassword is not displayed in the logs or output\u003cbr\u003eNaming Requirements\u003cbr\u003eSQL Server names must be Globally Unique\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFirewall Rule\u003c\/strong\u003e\u003cbr\u003eThe template includes:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAllowAzureServices (0.0.0.0)\u003c\/span\u003e\u003cbr\u003eThis allows Azure services to connect, but does NOT expose the database publicly.\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCost Note\u003c\/strong\u003e\u003cbr\u003eAzure SQL Database is NOT free\u003cbr\u003eEven the Basic tier incurs a cost\u003cbr\u003eDeploy only when necessary\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis package provides a reusable Azure SQL deployment solution with secure credential handling, proper dependency configuration, and a production-ready security baseline.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eet\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eWebsite: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport Hours:\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"font-family: 'Univers Condensed', sans-serif; color: rgb(43, 0, 255);\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42831216640098,"sku":null,"price":15.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_e4155fc0-0262-40ce-8239-1f28a48694a8.png?v=1777132743"},{"product_id":"azure-load-balancer-arm-template-ready-to-deploy-reusable-solution","title":"Azure Load Balancer ARM Template – Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cstrong\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis deployment package provides a fully configured Azure Load Balancer using Azure Resource Manager (ARM) templates.\u003cbr\u003eThe solution deploys a Standard Load Balancer with a public IP address, a frontend configuration, a backend pool, a health probe, and a load balancing rule.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003cbr\u003e- Azure Public IP (Standard, Static)\u003cbr\u003e- Azure Load Balancer (Standard SKU)\u003cbr\u003e- Frontend IP Configuration\u003cbr\u003e- Backend Address Pool\u003cbr\u003e- Health probe (TCP Port 80)\u003cbr\u003e- Load balancing rule (Port 80)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json \u003c\/span\u003e \u003cbr\u003eARM template defining the Load Balancer and Public IP\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json \u003c\/span\u003e \u003cbr\u003eParameter file used to Customize Deployment Values\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1  \u003c\/span\u003e\u003cbr\u003ePowerShell script for validation, What-If, and Deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003eTo use this template, you will need:\u003cbr\u003e- An active Azure subscription\u003cbr\u003e- Access to Azure Portal or Azure Cloud Shell\u003cbr\u003e- Azure PowerShell (optional if using Cloud Shell)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eImportant Design Note\u003c\/strong\u003e\u003cbr\u003eThis template creates the Load Balancer Infrastructure Only.\u003cbr\u003e\u003cspan style=\"color: rgb(255, 42, 0);\"\u003e\u003cstrong\u003eIt does NOT:\u003c\/strong\u003e\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(255, 42, 0);\"\u003e- Attach virtual machines\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(255, 42, 0);\"\u003e- Configure network interfaces\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(255, 42, 0);\"\u003e- Route live traffic\u003c\/span\u003e\u003cbr\u003e\u003cstrong\u003eBackend pool is intentionally empty and must be populated separately.\u003c\/strong\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003eHow to Deploy\u003cbr\u003e\u003cstrong\u003eStep 1: Update Parameters\u003c\/strong\u003e\u003cbr\u003eOpen **parameters.json** and update:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- lbName  \u003c\/span\u003e\u003cbr\u003e  Name of the Load Balancer\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- publicIpName  \u003c\/span\u003e\u003cbr\u003e  Name of the Public IP resource\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- location \u003c\/span\u003e \u003cbr\u003e  Example: eastus\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2: Upload Files (Cloud Shell)\u003c\/strong\u003e\u003cbr\u003eUpload:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- template.json  \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- parameters.json  \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- deploy.ps1  \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Run Deployment Script\u003c\/strong\u003e\u003cbr\u003eThe script supports three modes:\u003cbr\u003eValidate (recommended first)\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e```powershell\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\\deploy.ps1 -resourceGroupName RG-ARM-TEMPLATES -mode Validate\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeployment Behavior\u003c\/strong\u003e\u003cbr\u003eThe script performs:\u003cbr\u003eResource group validation or creation\u003cbr\u003eTemplate validation or preview (based on mode)\u003cbr\u003eOptional deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAfter deployment: Expected Result\u003c\/strong\u003e\u003cbr\u003ePublic IP is created\u003cbr\u003eThe load balancer is provisioned\u003cbr\u003eFrontend, backend pool, probe, and rule are configured\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eImportant Notes\u003c\/strong\u003e\u003cbr\u003eBackend Configuration Required\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTo make the Load Balancer functional, you must:\u003c\/strong\u003e\u003cbr\u003eAttach virtual machine NICs to the Backend Pool\u003cbr\u003eEnsure NSG Rules allow required Traffic\u003cbr\u003eStandard SKU Behavior\u003cbr\u003eRequires explicit Network Configuration\u003cbr\u003eDoes not allow Implicit Inbound Traffic\u003cbr\u003eMore secure than Basic SKU\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCost Note\u003c\/strong\u003e\u003cbr\u003eStandard Public IP → \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eSmall Cost\u003c\/span\u003e\u003cbr\u003eStandard Load Balancer → \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eSmall Cost\u003c\/span\u003e\u003cbr\u003eDeploy only when needed.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis package provides a reusable Azure Load Balancer deployment solution with a clean, production-ready baseline, enabling consistent and secure network Load-Balancing configuration.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eet\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eWebsite: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport Hours:\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"font-family: 'Univers Condensed', sans-serif; color: rgb(43, 0, 255);\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42831229681762,"sku":null,"price":15.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_0e161adf-6436-4542-b2c8-74d3946218a2.png?v=1777135338"},{"product_id":"azure-monitoring-arm-template-ready-to-deploy-reusable-solution","title":"Azure Monitoring ARM Template – Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis deployment package provides a modern Azure Monitoring setup using Azure Resource Manager (ARM) templates.\u003c\/p\u003e\n\u003cp\u003eThe solution deploys a Log Analytics Workspace and a workspace-based Application Insights resource, enabling centralized logging, monitoring, and application telemetry.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003cbr\u003e- Azure Log Analytics Workspace\u003cbr\u003e- Azure Application Insights (workspace-based)\u003cbr\u003e- Configurable data retention policy\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json  \u003c\/span\u003e\u003cbr\u003eARM template defining the Log Analytics Workspace and Application Insights\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json \u003c\/span\u003e \u003cbr\u003eParameter file used to customize deployment values\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1\u003c\/span\u003e  \u003cbr\u003ePowerShell script for validation, What-If, and deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003eTo use this template, you will need:\u003cbr\u003eAn active Azure subscription\u003cbr\u003eAccess to Azure Portal or Azure Cloud Shell\u003cbr\u003eAzure PowerShell (optional if using Cloud Shell)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eArchitecture Overview\u003c\/strong\u003e\u003cbr\u003eThis template uses the modern Azure monitoring model:\u003cbr\u003e- Application Insights is linked to a Log Analytics Workspace\u003cbr\u003e- All telemetry and logs are stored centrally in the workspace\u003cbr\u003e- Enables unified querying, alerting, and diagnostics\u003c\/p\u003e\n\u003cp\u003eHow to Deploy\u003cbr\u003e\u003cstrong\u003eStep 1: Update Parameters\u003c\/strong\u003e\u003cbr\u003eOpen **\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e** and update:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- workspaceName \u003c\/span\u003e \u003cbr\u003e  Name of the Log Analytics Workspace\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- appInsightsName  \u003c\/span\u003e\u003cbr\u003e  Name of the Application Insights resource\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- location  \u003c\/span\u003e\u003cbr\u003e  Example: eastus\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e- retentionInDays  \u003c\/span\u003e\u003cbr\u003e  Default: 30 (minimum), configurable up to 730\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2: Upload Files (Cloud Shell)\u003c\/strong\u003e\u003cbr\u003eUpload:\u003cbr\u003e- template.json  \u003cbr\u003e- parameters.json  \u003cbr\u003e- deploy.ps1  \u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Run Deployment Script\u003c\/strong\u003e\u003cbr\u003eThe script supports three modes:\u003cbr\u003eValidate (recommended first)\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e```powershell\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\\deploy.ps1 -resourceGroupName RG-ARM-TEMPLATES -mode Validate\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eDeployment Behavior\u003cbr\u003eThe script performs:\u003cbr\u003eResource group validation or creation\u003cbr\u003eTemplate validation or preview (Based on Mode)\u003cbr\u003eOptional deployment\u003c\/p\u003e\n\u003cp\u003eAfter deployment: Expected Result\u003cbr\u003eLog Analytics Workspace is created\u003cbr\u003eApplication Insights is provisioned\u003cbr\u003eApplication Insights is linked to the workspace\u003cbr\u003eRetention policy is applied\u003cbr\u003eImportant Notes\u003cbr\u003eModern Monitoring Model\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis template uses the current Azure standard:\u003c\/strong\u003e\u003cbr\u003eWorkspace-based Application Insights\u003cbr\u003eCentralized logging and analytics\u003cbr\u003eImproved scalability and query capabilities\u003cbr\u003eData Retention\u003cbr\u003eMinimum retention is 30 days\u003cbr\u003eMaximum retention is 730 days\u003cbr\u003eLonger retention may increase cost\u003cbr\u003eNaming Requirements\u003cbr\u003eWorkspace and Application Insights names must be unique within the resource group\u003cbr\u003eCost Consideration\u003cbr\u003eLog Analytics uses a pay-per-ingested-data model\u003cbr\u003eApplication Insights shares the same ingestion model\u003cbr\u003eCosts depend on the volume of collected telemetry\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis package provides a reusable Azure Monitoring deployment solution based on modern architecture, enabling centralized logging, application monitoring, and scalable observability for cloud environments.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSupport\u003c\/strong\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003cbr\u003eITCloudAcademy Support Team\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003eEmail: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003esupport@ITCloudAcademy.net\u003c\/span\u003e\u003cbr\u003eEmail: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cbr\u003eWebsite: \u003cspan style=\"color: rgb(43, 0, 255);\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSupport Hours:\u003c\/strong\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003cbr\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42831232499810,"sku":null,"price":15.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_521764df-40bf-4e25-9f86-2e0f816273a1.png?v=1777136897"},{"product_id":"azure-s2s-vpn-arm-reusable-template","title":"Azure S2S VPN ARM Template Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cstrong\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eThis repository contains a production-ready Azure Resource Manager (ARM) template designed to deploy a complete Site-to-Site (S2S) VPN infrastructure in Microsoft Azure.\u003c\/p\u003e\n\u003cp\u003eThe solution enables secure communication between an Azure Virtual Network and an on-premises network via an IPSec VPN tunnel.\u003c\/p\u003e\n\u003cp\u003eThe template is fully parameterized and validated using Azure-native testing mechanisms to ensure deployment reliability and consistency across environments.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e2. What This Template Deploys\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eThis ARM template provisions the following Azure resources:\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eVirtual Network (VNet)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eCustom address space defined via parameters\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eIncludes required GatewaySubnet\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eGateway Subnet\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eDedicated subnet named GatewaySubnet\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eRequired for VPN Gateway deployment\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eConfigurable CIDR range\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003ePublic IP Address\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eStandard SKU\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eStatic allocation\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eUsed by the VPN Gateway\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eVirtual Network Gateway\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eVPN Gateway (Route-based)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eSupports IPSec\/IKE (IKEv2 by default)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eConfigurable SKU (VpnGw1–VpnGw5)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eSupports Generation1 and Generation2\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eLocal Network Gateway\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eRepresents on-premises VPN device\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eStores public IP and on-prem address spaces\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eVPN Connection\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eIPSec tunnel between Azure and on-prem\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eUses shared key authentication\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eConfigurable protocol (IKEv1\/IKEv2)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eIncludes Dead Peer Detection (DPD)\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e3. Architecture Summary\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eAzure VNet contains a dedicated GatewaySubnet where the VPN Gateway is deployed.\u003cbr\u003eThe VPN Gateway connects to an on-premises network via the Local Network Gateway using an IPSec tunnel.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis architecture supports:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eHybrid cloud connectivity\u003cbr\u003eSecure data transfer between environments\u003cbr\u003eEnterprise-grade network integration\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e4. Prerequisites\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eBefore using this template, ensure the following:\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAzure Requirements:\u003c\/strong\u003e\u003cbr\u003eActive Azure Subscription\u003cbr\u003eContributor or Owner Permissions on the RG\u003cbr\u003eAzure CLI installed or Azure Cloud Shell access\u003cbr\u003eNetworking Requirements\u003cbr\u003eNon-overlapping IP Address ranges between Azure and On-Premises Networks\u003cbr\u003eValid public IP Address for the On-Premises VPN device\u003cbr\u003e\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFirewall configured to allow:\u003c\/strong\u003e\u003cbr\u003eUDP 500 (IKE)\u003cbr\u003eUDP 4500 (IPSec NAT-T)\u003cbr\u003eDesign Requirements\u003cbr\u003eGatewaySubnet must be named exactly GatewaySubnet\u003cbr\u003eRecommended subnet size:\u003cbr\u003eMinimum: \/27\u003cbr\u003eRecommended: \/26 for scalability\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e5. Files Included\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json\u003c\/span\u003e\u003cbr\u003eMain ARM template defining all Azure resources\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e\u003cbr\u003eParameter file containing environment-specific values\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1\u003c\/span\u003e\u003cbr\u003eOptional deployment automation script\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e6. Deployment Instructions\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 1: Upload Files\u003c\/strong\u003e\u003cbr\u003eUpload template.json and parameters.json to Azure Cloud Shell or local environment.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2: Validate Template\u003c\/strong\u003e\u003cbr\u003eaz deployment group validate \\\u003cbr\u003e  --resource-group RG-ARM-TEMPLATES \\\u003cbr\u003e  --template-file template.json \\\u003cbr\u003e  --parameters parameters.json\u003cbr\u003e\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3: Run WHAT-IF (Recommended)\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaz deployment group what-if \\\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e  --resource-group RG-ARM-TEMPLATES \\\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e  --template-file template.json \\\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e  --parameters parameters.json\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 4: Deploy (Optional)\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaz deployment group create \\\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e  --resource-group RG-ARM-TEMPLATES \\\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e  --template-file template.json \\\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e  --parameters parameters.json\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e7. Testing and Validation (Completed)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following validation steps were successfully performed:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eTemplate Validation\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eJSON Syntax Verified\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eARM Schema Compliance Confirmed\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eResource Definitions Validated\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eParameter Validation\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAll Parameters Correctly Mapped\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eData Types Validated (String, Array, Object, secureString)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eNo Missing or Mismatched Parameters\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAzure WHAT-IF Validation\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAzure Control Plane Accepted the Configuration\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eResource Dependencies Resolved Correctly\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eNo policy or RBAC Conflicts Detected\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eNo Runtime Validation Errors\u003c\/span\u003e\u003cbr\u003e\u003cbr\u003e\u003cstrong\u003eExpected Result output:\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eResource changes: 5 to create\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eResources identified:\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eVirtual Network\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003ePublic IP Address\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eVirtual Network Gateway\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eLocal Network Gateway\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eVPN Connection\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eThis confirms the template is:\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eDeployable\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eStructurally correct\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAzure-compliant\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e8. Important Notes\u003c\/strong\u003e\u003cbr\u003eVPN Gateway deployment takes approximately 30–45 minutes\u003cbr\u003eVPN connection status will remain NotConnected until a real on-prem device is configured\u003cbr\u003eThis template validates infrastructure deployment only, not network connectivity\u003cbr\u003e\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e9. Security Considerations\u003c\/strong\u003e\u003cbr\u003eShared Key is defined in the Parameters File for Testing Purposes\u003cbr\u003e\u003cstrong\u003eFor Production:\u003c\/strong\u003e\u003cbr\u003eUse Azure Key Vault\u003cbr\u003eAvoid storing secrets in plain text\u003cbr\u003eRotate keys regularly\u003cbr\u003e10. Limitations\u003cbr\u003eDoes not deploy on-prem VPN device\u003cbr\u003eDoes not validate tunnel connectivity\u003cbr\u003eDoes not include diagnostic settings or monitoring\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e11. Best Practices Implemented\u003c\/strong\u003e\u003cbr\u003eFull parameterization for reusability\u003cbr\u003eUse of Standard SKU Public IP\u003cbr\u003eRoute-based VPN configuration\u003cbr\u003eExplicit dependency management\u003cbr\u003eTagging support for governance\u003cbr\u003eSecureString usage for sensitive values\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e12. Conclusion\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eThis ARM template provides a fully validated, enterprise-ready foundation for deploying Azure Site-to-Site VPN infrastructure. All pre-deployment validation steps have been successfully completed using Azure-native tools, ensuring the template can be deployed without errors.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e13. Next Steps\u003c\/strong\u003e\u003cbr\u003eDeploy the template in a Test Environment\u003cbr\u003eConfigure On-Prem VPN Device\u003cbr\u003eValidate Connectivity and Routing\u003cbr\u003eExtend with Monitoring and Diagnostics\u003cbr\u003eIntegrate into CI\/CD Pipelines\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eet\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eWebsite: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport Hours:\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"font-family: 'Univers Condensed', sans-serif; color: rgb(43, 0, 255);\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42831836905570,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_d2052697-1460-4ddd-ae58-206c2114684e.png?v=1777172137"},{"product_id":"azure-kubernetes-service-aks-arm-reusable-template","title":"Azure Kubernetes Service (AKS) ARM Template Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis repository contains a Production-Ready Reusable Azure Resource Manager (ARM) Template for deploying a fully configured Azure Kubernetes Service (AKS) Cluster using Infrastructure as Code (IaC).\u003cbr\u003eThe template is Modular, Reusable, and aligned with Azure Best Practices, supporting Enterprise-Grade Deployments with Azure CNI Networking, managed Identity, and RBAC integration.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003cbr\u003eThis ARM template provisions the following Azure resources:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAzure Kubernetes Service (AKS) Cluster\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eSystem Node Pool (Virtual Machine Scale Sets)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAzure CNI Networking Configuration\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eStandard Load Balancer\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eManaged Identity (SystemAssigned)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAzure RBAC integration for Kubernetes authorization\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eDedicated Node Resource Group\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eArchitecture Summary\u003c\/strong\u003e\u003cbr\u003eThe deployed AKS cluster includes:\u003cbr\u003eOne system node pool\u003cbr\u003eAzure CNI networking (VNet-integrated)\u003cbr\u003eLinux-based worker nodes (Ubuntu)\u003cbr\u003eManaged control plane\u003cbr\u003eRole-Based Access Control (RBAC)\u003cbr\u003eAzure Active Directory (AAD) integration\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-size: 0.875rem;\"\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003eBefore using this template, ensure the following:\u003cbr\u003eAn existing Azure subscription\u003cbr\u003eAn existing resource group (example: RG-ARM-TEMPLATES)\u003cbr\u003eAn existing Virtual Network (VNet)\u003cbr\u003eA dedicated subnet for AKS deployment\u003cbr\u003e\u003cstrong\u003eRequired permissions:\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eContributor on the Resource Group\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eNetwork Contributor (or equivalent) on the Subnet\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAzure CLI installed or Azure Cloud Shell access\u003c\/span\u003e\u003cbr\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-size: 0.875rem;\"\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json\u003c\/span\u003e\u003cbr\u003eDefines the AKS infrastructure\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e\u003cbr\u003eProvides input values for deployment\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1\u003c\/span\u003e\u003cbr\u003ePowerShell script to validate, simulate, and optionally deploy\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eParameter Configuration\u003c\/strong\u003e\u003cbr\u003eThe parameters.json file includes:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAKS cluster name\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eDNS prefix\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eNode pool configuration (VM size, count, disk)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eNetworking configuration (Service CIDR, DNS IP)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eSubnet ID (critical requirement)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eNode resource group name\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eTags for resource classification\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eImportant:\u003c\/strong\u003e\u003cbr\u003eThe \u003cspan style=\"color: rgb(43, 0, 255);\"\u003evnetSubnetId\u003c\/span\u003e parameter must reference a valid, existing subnet:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e\/subscriptions\/\u0026lt;subscription-id\u0026gt;\/resourceGroups\/\u0026lt;vnet-rg\u0026gt;\/providers\/Microsoft.Network\/virtualNetworks\/\u0026lt;vnet-name\u0026gt;\/subnets\/\u0026lt;subnet-name\u0026gt;\u003c\/span\u003e\u003cbr\u003e\u003cstrong\u003eTesting Methodology (No Deployment)\u003c\/strong\u003e\u003cbr\u003eThe template and parameters were fully validated using \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAzure WHAT-IF\u003c\/span\u003e Deployment Simulation.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 1 – Template Validation\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaz deployment group validate \\\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e  --resource-group RG-ARM-TEMPLATES \\\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e  --template-file template.json \\\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e  --parameters parameters.json\u003c\/span\u003e\u003cbr\u003e\u003cstrong\u003eStep 2 – WHAT-IF Simulation\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaz deployment group what-if \\\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e  --resource-group RG-ARM-TEMPLATES \\\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e  --template-file template.json \\\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e  --parameters parameters.json\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(66, 74, 59);\"\u003eSuccessful Validation Result\u003c\/span\u003e\u003cbr\u003eThe following output confirms a valid configuration:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eResource changes: 1 to create\u003c\/span\u003e\u003cbr\u003e+ Microsoft.ContainerService\/managedClusters\u003cbr\u003eImportant Validation Confirmation\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDuring testing:\u003c\/strong\u003e\u003cbr\u003eThe AKS configuration was fully validated by the Azure Control Plane\u003cbr\u003eThe Subnet Dependency was verified using a Real Subnet ID\u003cbr\u003e\u003cstrong\u003eThis represents full Pre-Deployment validation.\u003c\/strong\u003e\u003cbr\u003eDeployment (Optional)\u003cbr\u003eDeployment is controlled via the PowerShell script.\u003cbr\u003e\u003cstrong\u003eRun Validation and Simulation Only\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\/deploy.ps1\u003c\/span\u003e\u003cbr\u003eExecute Deployment\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\/deploy.ps1 -Deploy\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDesign Decisions and Best Practices\u003c\/strong\u003e\u003cbr\u003eThis template follows Azure and AKS Best Practices:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eUses Azure CNI networking for enterprise scenarios\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eUses Virtual Machine Scale Sets (VMSS) for node pools\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eUses Managed Identity instead of Service Principals\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eUses Standard Load Balancer (Required for Production)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eExplicitly defines OS Type and SKU (Ubuntu)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eImplements Controlled Rolling Upgrades (maxSurge)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eSeparates Node Resources into a Dedicated Resource Group\u003c\/span\u003e\u003cbr\u003e\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity Considerations\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(255, 42, 0);\"\u003eNo secrets are stored in the template or parameters\u003c\/span\u003e\u003cbr\u003eRBAC is enabled by default\u003cbr\u003eAzure RBAC integration is enabled for Kubernetes Authorization\u003cbr\u003eIdentity is Managed via SystemAssigned Managed Identity\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eNotes and Limitations\u003c\/strong\u003e\u003cbr\u003eThis template does not deploy Workloads or Kubernetes Manifests\u003cbr\u003eThis template assumes a pre-existing VNet and Subnet\u003cbr\u003eKubernetes Version can be specified or left Blank for the default\u003cbr\u003ePrivate cluster configuration is currently disabled\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eNext Steps\u003c\/strong\u003e\u003cbr\u003eAfter deployment, recommended actions include:\u003cbr\u003e\u003cstrong\u003eRetrieve cluster credentials:\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaz aks get-credentials --name \u0026lt;aksClusterName\u0026gt; --resource-group \u0026lt;resourceGroup\u0026gt;\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eConfigure kubectl access\u003c\/span\u003e\u003cbr\u003eDeploy workloads (Helm, manifests, GitOps)\u003cbr\u003eImplement monitoring (Azure Monitor, Prometheus, Grafana)\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis ARM template provides a fully validated, enterprise-ready AKS Deployment Foundation.\u003cbr\u003eIt has been tested using \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAzure WHAT-IF\u003c\/span\u003e simulation with real dependencies and is confirmed to be deployable without errors.\u003cbr\u003e\u003cstrong\u003eThis approach ensures:\u003c\/strong\u003e\u003cbr\u003eZero-Risk Validation\u003cbr\u003eReusable Infrastructure\u003cbr\u003eConsistent Deployments\u003cbr\u003eAlignment with Enterprise Standards\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eet\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eWebsite: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport Hours:\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\" style=\"color: rgb(43, 0, 255);\"\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42831977775202,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_a4c44712-0ce4-450b-8a98-b7034397f8e3.png?v=1777178549"},{"product_id":"azure-hub-and-spoke-arm-template-ready-to-deploy-reusable-solution","title":"Azure Hub and Spoke ARM Template Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003cbr\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003eThis ARM template deploys a **Hub-and-Spoke network topology in Microsoft Azure**, following enterprise-grade design principles used in production landing zones and scalable cloud architectures.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe deployment includes:\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* One Hub Virtual Network (VNet)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* One Spoke Virtual Network (VNet)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* One subnet in each VNet\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Bidirectional VNet peering between Hub and Spoke\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis design is the foundation for:\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Centralized networking\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Secure traffic inspection\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Hybrid connectivity (VPN \/ ExpressRoute)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Multi-spoke expansion\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eArchitecture Design\u003c\/strong\u003e\u003cbr\u003e\u003cstrong\u003eHub VNet\u003c\/strong\u003e\u003cbr\u003eThe Hub acts as the central point for:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Shared services (DNS, AD, Firewall)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Connectivity (VPN Gateway, ExpressRoute)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Traffic inspection and routing\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSpoke VNet\u003c\/strong\u003e\u003cbr\u003eThe Spoke is designed for:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Application workloads\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Isolation of environments\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Scalable expansion (multiple spokes)\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVNet Peering\u003c\/strong\u003e\u003cbr\u003eTwo peerings are created:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Hub → Spoke\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Spoke → Hub\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis ensures:\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Full bidirectional communication\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Low latency (Microsoft backbone)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* No need for gateways for internal traffic\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eResources Deployed\u003c\/strong\u003e\u003cbr\u003eThe template creates the following Azure Resources:\u003cbr\u003e1. \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eMicrosoft.Network\/virtualNetworks \u003c\/span\u003e(Hub)\u003cbr\u003e2. \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eMicrosoft.Network\/virtualNetworks \u003c\/span\u003e(Spoke)\u003cbr\u003e3. \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eMicrosoft.Network\/virtualNetworks\/virtualNetworkPeerings\u003c\/span\u003e (Hub → Spoke)\u003cbr\u003e4. \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eMicrosoft.Network\/virtualNetworks\/virtualNetworkPeerings\u003c\/span\u003e (Spoke → Hub)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eKey Features\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Fully Parameterized Design\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Deterministic Deployment (No race conditions)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Custom DNS Support\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Optional DDoS Protection\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Gateway Transit Ready (Future Expansion)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Clean Dependency Structure\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Reusable for Dev \/ Test \/ Production Environments\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003e  Before using this template, ensure:\u003cbr\u003e* Azure Subscription is Active\u003cbr\u003e* Resource Group exists (\u003cspan style=\"color: rgb(43, 0, 255);\"\u003ee.g., RG-ARM-TEMPLATES\u003c\/span\u003e)\u003cbr\u003e* Azure CLI or Cloud Shell is available\u003cbr\u003e* Proper Permissions (Contributor or Higher)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* template.json\u003c\/span\u003e\u003cbr\u003e  Contains the full infrastructure definition\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* parameters.json\u003c\/span\u003e\u003cbr\u003e  Contains environment-specific values\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* deploy.ps1\u003c\/span\u003e\u003cbr\u003e  PowerShell script for validation, simulation, and optional deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeployment Process\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 1 – Upload Files to Cloud Shell\u003c\/strong\u003e\u003cbr\u003eUpload the following files:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* template.json\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* parameters.json\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* deploy.ps1\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2 – Validate Template\u003c\/strong\u003e\u003cbr\u003eRun:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaz deployment group validate \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--resource-group RG-ARM-TEMPLATES \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--template-file template.json \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--parameters parameters.json\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3 – Run WHAT-IF (Simulation Only)\u003c\/strong\u003e\u003cbr\u003eRun:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaz deployment group what-if \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--resource-group RG-ARM-TEMPLATES \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--template-file template.json \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--parameters parameters.json\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 4 – Optional Deployment\u003c\/strong\u003e\u003cbr\u003eOnly if required:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaz deployment group create \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--resource-group RG-ARM-TEMPLATES \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--template-file template.json \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--parameters parameters.json\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTesting and Validation\u003c\/strong\u003e\u003cbr\u003eValidation Completed\u003cbr\u003e\u003cstrong\u003eThe following tests were successfully performed:\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e1. Template-only validation (no parameters)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e2. Template with inline parameters\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e3. Template with parameters.json\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e4. Azure WHAT-IF simulation\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWHAT-IF Results\u003c\/strong\u003e\u003cbr\u003eExpected and confirmed output:\u003cbr\u003eResource changes: 4 to create\u003cbr\u003e\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eResources Validated:\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Hub VNet\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Spoke VNet\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Hub → Spoke Peering\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Spoke → Hub Peering\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eKey Validation Outcomes\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(92, 120, 63);\"\u003e* No ARM syntax errors\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(92, 120, 63);\"\u003e* No dependency issues\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(92, 120, 63);\"\u003e* No race conditions\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(92, 120, 63);\"\u003e* No invalid configurations\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(92, 120, 63);\"\u003e* All parameters resolved successfully\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(92, 120, 63);\"\u003e* Azure control plane accepted configuration\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eImportant Notes\u003c\/strong\u003e\u003cbr\u003e* This process does NOT deploy resources unless explicitly executed\u003cbr\u003e* WHAT-IF mode is safe and does not incur cost\u003cbr\u003e* CIDR ranges must not overlap when modified\u003cbr\u003e* Gateway transit parameters should only be enabled when a VPN gateway exists\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eBest Practices\u003c\/strong\u003e\u003cbr\u003e* Use separate Address Spaces for each VNet\u003cbr\u003e* Keep Hub for shared services only\u003cbr\u003e* Add additional Spokes for each Application or Environment\u003cbr\u003e* Integrate Azure Firewall or NVA in Hub for Traffic Inspection\u003cbr\u003e* Use Custom DNS for Enterprise Environments\u003cbr\u003e* Expand using Modular Templates\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFuture Enhancements\u003c\/strong\u003e\u003cbr\u003eThis template can be extended to include:\u003cbr\u003e* VPN Gateway (Site-to-Site \/ Point-to-Site)\u003cbr\u003e* Azure Firewall in Hub\u003cbr\u003e* Network Security Groups (NSGs)\u003cbr\u003e* Route Tables (UDR)\u003cbr\u003e* Multiple Spokes\u003cbr\u003e* Private Endpoints\u003cbr\u003e* ExpressRoute integration\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis Hub-and-Spoke ARM template is:\u003cbr\u003e* Fully validated\u003cbr\u003e* Enterprise-ready\u003cbr\u003e* Deterministic and reliable\u003cbr\u003e* Safe to deploy\u003cbr\u003e* Designed for scalability\u003c\/p\u003e\n\u003cp\u003eIt provides a solid networking foundation for any Azure environment and aligns with modern cloud architecture standards.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eet\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eWebsite: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport Hours:\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\" style=\"color: rgb(43, 0, 255);\"\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42832063135842,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_64e4d66a-f254-47db-95dc-6d257439f8ef.png?v=1777182017"},{"product_id":"azure-availability-set-arm-template-ready-to-deploy-reusable-solution","title":"Azure Availability Set-ARM-Template - Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis ARM template deploys a **Highly Available Virtual Machine Infrastructure** in Microsoft Azure using an **Availability Set**.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe Deployment Includes:\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* One Availability Set\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Two Virtual Machines (VMs)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Two Network Interfaces (NICs)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* One Virtual Network (VNet)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* One Subnet\u003c\/span\u003e\u003cbr\u003eThis design ensures **\u003cstrong\u003eFault Tolerance and Update Resiliency\u003c\/strong\u003e** by distributing VMs across Fault Domains and Update Domains within a Single Azure Region (Availability Sets are Region-Scoped)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAvailability Set Architecture Design\u003c\/strong\u003e\u003cbr\u003eThe Availability Set ensures:\u003cbr\u003e*Fault Domain isolation (Protection against Hardware Failure)\u003cbr\u003e*Update Domain Distribution (Protection During Maintenance Events)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVirtual Machines\u003c\/strong\u003e\u003cbr\u003e* Two VMs are Deployed\u003cbr\u003e* Both are placed in the same Availability Set\u003cbr\u003e* Each VM is Attached to its own NIC\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eNetworking\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* A dedicated VNet is deployed\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* A Subnet is created for VM placement\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Each VM receives a dynamically assigned private IP\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eResources Deployed\u003c\/strong\u003e\u003cbr\u003eThe template creates the following Azure Resources:\u003cbr\u003e1. \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eMicrosoft.Network\/virtualNetworks\u003c\/span\u003e\u003cbr\u003e2. \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eMicrosoft.Compute\/availabilitySets\u003c\/span\u003e\u003cbr\u003e3. \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eMicrosoft.Network\/networkInterfaces\u003c\/span\u003e (2 Instances)\u003cbr\u003e4. \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eMicrosoft.Compute\/virtualMachines \u003c\/span\u003e(2 Instances)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eKey Features\u003c\/strong\u003e\u003cbr\u003e* Fully Parameterized Deployment\u003cbr\u003e* Deterministic Resource creation order\u003cbr\u003e* Managed Disks with configurable Storage Type\u003cbr\u003e* Safe VM naming logic (Prevents Substring Errors)\u003cbr\u003e* Automatic cleanup behavior for NICs (deleteOption enabled)\u003cbr\u003e* Consistent tagging across all resources\u003cbr\u003e* Designed for Test, Development, and Production use\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003eBefore using this Template, ensure:\u003cbr\u003e* Azure Subscription is Active\u003cbr\u003e* Resource Group exists (example: \u0026lt;RG-NameHere\u0026gt;)\u003cbr\u003e* Azure CLI or Cloud Shell is available\u003cbr\u003e* Required permissions (Contributor or higher)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json\u003c\/span\u003e\u003cbr\u003eDefines the infrastructure resources\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e\u003cbr\u003eProvides environment-specific values\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1\u003c\/span\u003e\u003cbr\u003eAutomates validation, simulation, and optional deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeployment Process\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 1 – Upload Files to Cloud Shell\u003c\/strong\u003e\u003cbr\u003eUpload:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2 – Validate Template\u003c\/strong\u003e\u003cbr\u003eRun:\u003cbr\u003eaz deployment group validate \u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--resource-group \u0026lt;RG-NameHere\u0026gt; \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--template-file template.json \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--parameters parameters.json\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3 – Run WHAT-IF (Simulation Only)\u003c\/strong\u003e\u003cbr\u003eRun:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaz deployment group what-if \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--resource-group \u0026lt;RG-NameHere\u0026gt; \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--template-file template.json \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--parameters parameters.json\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 4 – Optional Deployment\u003c\/strong\u003e\u003cbr\u003eRun only if actual deployment is required:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaz deployment group create \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--resource-group RG-ARM-TEMPLATES \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--template-file template.json \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--parameters parameters.json\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTesting and Validation\u003c\/strong\u003e\u003cbr\u003eTesting Performed\u003cbr\u003eThe following validation steps were successfully completed:\u003cbr\u003e\u003cstrong\u003e1.\u003c\/strong\u003e \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eTemplate validation without parameters\u003c\/span\u003e\u003cbr\u003e\u003cstrong\u003e2.\u003c\/strong\u003e \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eTemplate validation with inline parameters\u003c\/span\u003e\u003cbr\u003e\u003cstrong\u003e3.\u003c\/strong\u003e \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eTemplate validation using parameters.json\u003c\/span\u003e\u003cbr\u003e\u003cstrong\u003e4.\u003c\/strong\u003e \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eAzure WHAT-IF simulation\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWHAT-IF Results\u003c\/strong\u003e\u003cbr\u003eExpected and confirmed output:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eResource changes: 6 to create\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eResources Validated\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Virtual Network\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Availability Set\u003c\/span\u003e\u003cbr\u003e* \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eNetwork Interfaces\u003c\/span\u003e (\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e2\u003c\/span\u003e)\u003cbr\u003e* \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eVirtual Machines \u003c\/span\u003e(\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e2\u003c\/span\u003e)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eValidation Outcomes\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* No syntax errors\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* No ARM Function Failures (Substring Logic Corrected)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* No Dependency Conflicts\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* All parameters resolved successfully\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Azure accepted all configurations\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eImportant Notes\u003c\/strong\u003e\u003cbr\u003e* WHAT-IF testing does NOT deploy resources\u003cbr\u003e* No cost is incurred during validation\u003cbr\u003e* VM deployment will incur a cost if executed\u003cbr\u003e* \u003cspan style=\"color: rgb(255, 42, 0);\"\u003ePasswords in parameters.json are for testing only\u003c\/span\u003e\u003cbr\u003e* Use secure methods (Key Vault or CLI Prompt) in Production\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eBest Practices\u003c\/strong\u003e\u003cbr\u003e* Keep VM count aligned with Fault Domain Strategy\u003cbr\u003e* Use Availability Sets for smaller Workloads\u003cbr\u003e* Use Virtual Machine Scale Sets for Large-Scale Deployments\u003cbr\u003e* Separate Environments using Different VNets\u003cbr\u003e* Apply consistent tagging for Governance\u003cbr\u003e* Use Managed Disks for Performance and Reliability\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFuture Enhancements\u003c\/strong\u003e\u003cbr\u003eThis template can be extended to include:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Load Balancer (for VM traffic distribution)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Network Security Groups (NSGs)\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Azure Backup integration\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Boot diagnostics\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Custom script extensions\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Domain join automation\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Monitoring with Azure Monitor\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis Availability Set ARM template is:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Fully validated and tested\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Deterministic and reliable\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Enterprise-ready\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Safe to deploy\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e* Designed for high availability\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eIt provides a foundational pattern for deploying resilient virtual machines in Azure using Infrastructure as Code.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eet\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eWebsite: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport Hours:\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"font-family: 'Univers Condensed', sans-serif; color: rgb(43, 0, 255);\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42832289431650,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_6c8e945d-4c61-473b-b769-c729eeedd93d.png?v=1777187181"},{"product_id":"azure-virtual-machine-scale-set-vmss-arm-template-ready-to-deploy-reusable-solution","title":"Azure Virtual Machine Scale Set (VMSS) ARM Template Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis ARM template deploys a **Virtual Machine Scale Set (VMSS)** in Microsoft Azure, providing a **Scalable, Highly Available Compute Platform**.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe deployment includes:\u003c\/strong\u003e\u003cbr\u003e* Virtual Machine Scale Set (VMSS)\u003cbr\u003e* Virtual Network (VNet)\u003cbr\u003e* Subnet\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis design enables:\u003c\/strong\u003e\u003cbr\u003e* Horizontal Scaling of Virtual Machines\u003cbr\u003e* Automated instance Management\u003cbr\u003e* Rolling Upgrades and Self-Healing Capabilities\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVirtual Machine Scale Set Architecture Design\u003c\/strong\u003e\u003cbr\u003eThe VMSS is configured with:\u003cbr\u003e* Uniform Orchestration Mode\u003cbr\u003e* Configurable Instance Count\u003cbr\u003e* Rolling Upgrade Policy\u003cbr\u003e* Automatic Repair Capability\u003cbr\u003e* Managed Disks\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eNetworking\u003c\/strong\u003e\u003cbr\u003e* A dedicated Virtual Network is created\u003cbr\u003e* A subnet is defined for VMSS Instances\u003cbr\u003e* Network Interfaces are managed internally by VMSS\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eResources Deployed\u003c\/strong\u003e\u003cbr\u003eThe template provisions the following Azure resources:\u003cbr\u003e\u003cstrong\u003e1. \u003c\/strong\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eMicrosoft.Network\/virtualNetworks\u003c\/span\u003e\u003cbr\u003e\u003cstrong\u003e2.\u003c\/strong\u003e \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eMicrosoft.Compute\/virtualMachineScaleSets\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eKey Features\u003c\/strong\u003e\u003cbr\u003e* Fully Parameterized Deployment\u003cbr\u003e* Safe Hostname Generation (Prevents Substring Errors)\u003cbr\u003e* Managed disk configuration with selectable storage type\u003cbr\u003e* Rolling Upgrade Policy for Controlled Updates\u003cbr\u003e* Automatic instance repair configuration\u003cbr\u003e* Support for Regular and Spot VM priority\u003cbr\u003e* Deterministic Deployment Behavior\u003cbr\u003e* Consistent Tagging Strategy\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003eBefore Deployment, ensure:\u003cbr\u003e* Azure Subscription is active\u003cbr\u003e* Resource Group exists \u0026lt;RG-Name-Here\u0026gt;\u003cbr\u003e* Azure CLI or Cloud Shell is available\u003cbr\u003e* Required Permissions (Contributor or Higher)\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json\u003c\/span\u003e\u003cbr\u003eDefines the VMSS and Networking Infrastructure\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e\u003cbr\u003eContains Environment-Specific Values\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1\u003c\/span\u003e\u003cbr\u003eAutomates Validation, Simulation, and Optional Deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeployment Process\u003c\/strong\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 1 – Upload Files\u003c\/strong\u003e\u003cbr\u003eUpload the following to Azure Cloud Shell:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 2 – Validate Template\u003c\/strong\u003e\u003cbr\u003eRun:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaz deployment group validate \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--resource-group RG-ARM-TEMPLATES \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--template-file template.json \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--parameters parameters.json\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 3 – Run WHAT-IF (Simulation Only)\u003c\/strong\u003e\u003cbr\u003eRun:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaz deployment group what-if \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--resource-group RG-ARM-TEMPLATES \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--template-file template.json \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--parameters parameters.json\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eStep 4 – Optional Deployment\u003c\/strong\u003e\u003cbr\u003eRun only if actual deployment is required:\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eaz deployment group create \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--resource-group RG-ARM-TEMPLATES \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--template-file template.json \u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e--parameters parameters.json\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTesting and Validation Performed\u003c\/strong\u003e\u003cbr\u003eThe following testing steps were successfully completed:\u003cbr\u003e\u003cstrong\u003e1.\u003c\/strong\u003e Template validation without parameters\u003cbr\u003e\u003cstrong\u003e2.\u003c\/strong\u003e Template validation with inline parameters\u003cbr\u003e\u003cstrong\u003e3.\u003c\/strong\u003e Template validation using \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e\u003cbr\u003e\u003cstrong\u003e4.\u003c\/strong\u003e Azure WHAT-IF simulation\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWHAT-IF Results\u003c\/strong\u003e\u003cbr\u003eExpected and confirmed output:\u003cbr\u003eResource changes: 2 to create\u003cbr\u003eResources Validated\u003cbr\u003eVirtual Network\u003cbr\u003eVirtual Machine Scale Set\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eValidation Outcomes\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(87, 108, 86);\"\u003e* No Syntax Errors\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(87, 108, 86);\"\u003e* No ARM function failures\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(87, 108, 86);\"\u003e* All Parameters resolved correctly\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(87, 108, 86);\"\u003e* Azure accepted VMSS Orchestration Configuration\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(87, 108, 86);\"\u003e* Upgrade and Repair Policies Validated\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(87, 108, 86);\"\u003e* Networking configuration verified\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eImportant Notes\u003c\/strong\u003e\u003cbr\u003e* WHAT-IF testing does NOT deploy resources\u003cbr\u003e* No cost is incurred during validation\u003cbr\u003e* VMSS deployment will incur cost if executed\u003cbr\u003e* \u003cspan style=\"color: rgb(255, 42, 0);\"\u003ePasswords in parameters.json are for testing only\u003c\/span\u003e\u003cbr\u003e* Use Secure input methods or Azure Key Vault in Production\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eBest Practices\u003c\/strong\u003e\u003cbr\u003e* Use VMSS for Scalable Workloads instead of Availability Sets\u003cbr\u003e* Keep instance count aligned with Application demand\u003cbr\u003e* Use rolling upgrade mode for Production Environments\u003cbr\u003e* Enable Automatic Repairs for Resiliency\u003cbr\u003e* Use Premium disks for performance-critical workloads\u003cbr\u003e* Apply consistent tagging for governance and cost tracking\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFuture Enhancements\u003c\/strong\u003e\u003cbr\u003eThis template can be extended to include:\u003cbr\u003e* Azure Load Balancer (for Traffic Distribution)\u003cbr\u003e* Autoscaling rules based on CPU or Metrics\u003cbr\u003e* Azure Monitor integration\u003cbr\u003e* Custom Script Extensions\u003cbr\u003e* Domain join Configuration\u003cbr\u003e* Network Security Groups (NSGs)\u003cbr\u003e* Availability Zones for Multi-Zone Deployments\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis VMSS ARM template is:\u003cbr\u003e* Fully validated and tested\u003cbr\u003e* Deterministic and reliable\u003cbr\u003e* Enterprise-ready\u003cbr\u003e* Scalable by design\u003cbr\u003e* Safe to deploy\u003c\/p\u003e\n\u003cp\u003eIt provides a robust foundation for deploying scalable compute workloads in Azure using Infrastructure as Code.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eet\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eWebsite: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport Hours:\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"font-family: 'Univers Condensed', sans-serif; color: rgb(43, 0, 255);\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42832453763170,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_32e5e38e-d089-4c3d-a8a1-a9ccd3aeab66.png?v=1777217282"},{"product_id":"azure-application-gateway-waf-v2-arm-template-ready-to-deploy-reusable-solution","title":"Azure Application Gateway WAF v2 ARM Template Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eThis solution provides a complete Infrastructure-as-Code (IaC) package for deploying a production-ready Azure Application Gateway (WAF v2) using ARM templates. It is designed for engineers and organizations that require a secure, scalable, and standardized way to deploy an internet-facing application entry point in Azure.\u003cbr\u003eThe solution includes a fully validated ARM template, parameter configuration, deployment script, and detailed documentation, enabling consistent and repeatable deployments across environments.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Solution Deploys\u003c\/strong\u003e\u003cbr\u003eWhen executed with valid inputs, this solution deploys the following Azure resources:\u003cbr\u003eAzure Application Gateway (WAF v2 SKU) with autoscaling enabled\u003cbr\u003eExternal Web Application Firewall policy using OWASP rule set\u003cbr\u003ePublic IP address (Standard SKU)\u003cbr\u003eVirtual Network with a dedicated Application Gateway subnet\u003cbr\u003eHTTPS listener configured with SSL certificate from Azure Key Vault\u003cbr\u003eHTTP listener with automatic redirection to HTTPS\u003cbr\u003eBackend address pool using FQDN-based routing\u003cbr\u003eHealth probes for backend monitoring\u003cbr\u003eOptional diagnostic settings for logging and monitoring\u003cbr\u003eThe deployment follows modern Azure architecture practices, including separation of WAF policy, secure certificate handling, and scalable gateway configuration.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eKey Capabilities\u003c\/strong\u003e\u003cbr\u003eSecure TLS termination using Azure Key Vault integration\u003cbr\u003eBuilt-in Web Application Firewall protection (OWASP 3.2)\u003cbr\u003eAutoscaling for high availability and performance\u003cbr\u003eHTTP to HTTPS redirection for secure traffic enforcement\u003cbr\u003eBackend health monitoring and resilience\u003cbr\u003eParameterized design for flexible deployment across environments\u003cbr\u003eInfrastructure-as-Code approach for repeatability and consistency\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDependencies and Requirements\u003c\/strong\u003e\u003cbr\u003eThis solution requires external Azure resources and configuration that must be provided by the deployer. These dependencies are not created by the template.\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRequired dependencies include:\u003c\/strong\u003e\u003cbr\u003eKey Vault\u003cbr\u003eA Key Vault instance containing a valid SSL certificate stored as a secret in PFX format. The certificate must be enabled and not expired. A versionless secret URI is recommended.\u003cbr\u003eManaged Identity\u003cbr\u003eA user-assigned managed identity must exist and be assigned to the Application Gateway. This identity is used to securely access the Key Vault certificate.\u003cbr\u003eKey Vault Access Permissions\u003cbr\u003eThe managed identity must have permission to read secrets from the Key Vault. At minimum, it must be able to perform Get and List operations on secrets.\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eBackend Application\u003c\/strong\u003e\u003cbr\u003eA reachable backend application endpoint must exist. The backend must support HTTPS on port 443, respond to Health Probes, and present a valid TLS Certificate.\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDNS Configuration\u003c\/strong\u003e\u003cbr\u003eA public DNS record must be configured to resolve the frontend hostname to the Application Gateway public IP address after deployment.\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eNetworking\u003c\/strong\u003e\u003cbr\u003eA virtual network address space must be defined that does not overlap with existing networks. The Application Gateway must be deployed in a dedicated subnet that contains no other resources.\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOptional Dependencies\u003c\/strong\u003e\u003cbr\u003eA Trusted Root Certificate is required only if the backend uses a Private or Self-Signed Certificate. A Log Analytics workspace can be provided for diagnostics and monitoring.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eIntended Use\u003c\/strong\u003e\u003cbr\u003eThis solution is intended for:\u003cbr\u003eProduction deployments of Web Application Ingress in Azure\u003cbr\u003eStandardization of Application Gateway deployments across environments\u003cbr\u003eInfrastructure-as-Code implementations in DevOps pipelines\u003cbr\u003eSecure exposure of backend services to the internet\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eImportant Notes\u003c\/strong\u003e\u003cbr\u003eThis solution is Production-Ready but \u003cstrong\u003eNot Self-Contained\u003c\/strong\u003e. Successful deployment depends on providing \u003cstrong\u003evalid environment-specific values\u003c\/strong\u003e and ensuring that all external dependencies are correctly configured.\u003cbr\u003eValidation and preview operations (such as \u003cstrong\u003ewhat-if)\u003c\/strong\u003e can be executed without real resources, but f\u003cstrong\u003eull deployment requires real infrastructure components\u003c\/strong\u003e.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis product delivers a structured, secure, and enterprise-aligned deployment pattern for Azure Application Gateway WAF v2. It enables organizations to deploy a critical network security component consistently while enforcing best practices for security, scalability, and maintainability.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eet\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eWebsite: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport Hours:\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\" style=\"color: rgb(43, 0, 255);\"\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42833413865570,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_53013a77-d12e-4c29-943b-dfccf7369472.png?v=1777255402"},{"product_id":"azure-private-endpoint-arm-template-ready-to-deploy-reusable-solution","title":"Azure Private Endpoint ARM Template Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis repository provides a reusable ARM template and parameter file for deploying an Azure Private Endpoint. It enables secure connectivity between a virtual network and an Azure PaaS resource using Private Link.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003cbr\u003eAzure Private Endpoint\u003cbr\u003eNetwork interface with automatically assigned private IP\u003cbr\u003ePrivate Link connection to a target Azure service\u003cbr\u003eOptional Private DNS Zone Group if configured\u003cbr\u003eThe template supports both automatic approval and manual approval scenarios, depending on the target service configuration.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFiles Included\u003c\/strong\u003e\u003cbr\u003etemplate.json defines the Private Endpoint resource and optional DNS configuration\u003cbr\u003eparameters.json contains environment-specific input values\u003cbr\u003edeploy.ps1 executes the deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRequired Inputs\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eprivateEndpointName\u003c\/span\u003e\u003cbr\u003eName of the Private Endpoint resource\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003evirtualNetworkName\u003c\/span\u003e\u003cbr\u003eName of the existing virtual network\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003esubnetName\u003c\/span\u003e\u003cbr\u003eName of the existing subnet\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eprivateLinkServiceId\u003c\/span\u003e\u003cbr\u003eFull Azure resource ID of the target service\u003cbr\u003e\u003cstrong\u003eExample\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e\/subscriptions\/\u0026lt;sub-id\u0026gt;\/resourceGroups\/\u0026lt;rg\u0026gt;\/providers\/Microsoft.Storage\/storageAccounts\/\u0026lt;name\u0026gt;\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003egroupIds\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003eSubresource type for the target service\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eExamples\u003c\/strong\u003e\u003cbr\u003eBlob for Storage\u003cbr\u003esqlServer for SQL\u003cbr\u003evault for Key Vault\u003cbr\u003esites for App Service\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOptional Inputs\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003emanualApproval\u003c\/span\u003e\u003cbr\u003eSet to true if the connection requires approval\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eprivateDnsZoneId\u003c\/span\u003e\u003cbr\u003ePrivate DNS Zone resource ID if DNS integration is required\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etags\u003c\/span\u003e\u003cbr\u003eKey-value pairs applied to the resource\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRequirements\u003c\/strong\u003e\u003cbr\u003eA virtual network must already exist in the target resource group\u003cbr\u003eA subnet must exist within the virtual network\u003cbr\u003eThe subnet must allow Private Endpoint deployment and have network policies disabled\u003cbr\u003eThe target Azure resource must already exist\u003cbr\u003eThe target resource must support Private Link\u003cbr\u003eThe provided resource ID must be valid and complete\u003cbr\u003eThe groupIds value must match the target service type\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis template provides a production-ready and reusable deployment for Azure Private Endpoint. Successful deployment depends on correct parameter values and proper configuration of all required existing resources and dependencies.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eet\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eWebsite: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport Hours:\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"font-family: 'Univers Condensed', sans-serif; color: rgb(43, 0, 255);\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42833431101538,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_f05e8d00-6b83-4baf-91ec-ece4fcfb163f.png?v=1777256453"},{"product_id":"azure-firewall-arm-template-ready-to-deploy-reusable-solution","title":"Azure Firewall ARM Template Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cstrong\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis repository contains a production-ready Azure Resource Manager (ARM) template for deploying an Azure Firewall into an existing Virtual Network. The template supports deployment with or without an existing Firewall Policy and is designed for modular and repeatable infrastructure deployments.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003cbr\u003eAzure Firewall resource\u003cbr\u003ePublic IP Address with Standard SKU and static allocation\u003cbr\u003eIf a Firewall Policy is provided, the firewall is associated with the policy during deployment. If no policy is provided, the firewall is deployed without one.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003eA resource group must already exist\u003cbr\u003eA virtual network must already exist\u003cbr\u003eA subnet must exist with the following requirements\u003cbr\u003eName must be AzureFirewallSubnet\u003cbr\u003eMinimum subnet size must be \/26\u003cbr\u003eIf using a Firewall Policy\u003cbr\u003eAn existing Azure Firewall Policy must be available\u003cbr\u003eThe correct resource ID must be provided\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePermissions\u003c\/strong\u003e\u003cbr\u003eThe deploying identity must have sufficient rights to create network resources and associate policies\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePackage Contents\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json\u003c\/span\u003e\u003cbr\u003eDefines the Azure Firewall and Public IP resources\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e\u003cbr\u003eContains all required input values for deployment\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1\u003c\/span\u003e\u003cbr\u003eScript used to execute the deployment\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eREADME.md\u003c\/span\u003e\u003cbr\u003eDocumentation describing the deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat You Should See After Deployment\u003c\/strong\u003e\u003cbr\u003eAn Azure Firewall resource deployed into the specified virtual network\u003cbr\u003eA Public IP Address associated with the Firewall\u003cbr\u003eThe Firewall attached to the AzureFirewallSubnet\u003cbr\u003eIf a Firewall Policy was provided, the firewall will be associated with that policy\u003cbr\u003eThe firewall will be provisioned and ready for rule configuration and traffic inspection\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis template provides a clean and production-ready deployment of Azure Firewall. Successful deployment depends on correct prerequisite configuration and valid parameter values.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eet\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eWebsite: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport Hours:\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e \u003c\/span\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"font-family: 'Univers Condensed', sans-serif; color: rgb(43, 0, 255);\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42835954303074,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_073665f7-709e-4dc1-802c-e16ca1061e60.png?v=1777300936"},{"product_id":"azure-backup-vault-template-ready-to-deploy-reusable-solution","title":"Azure Backup Vault Template Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis repository contains an Azure Resource Manager (ARM) template for deploying an Azure Data Protection Backup Vault. The template is designed for consistent, repeatable deployment of backup infrastructure in Azure environments.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003cbr\u003eAzure Data Protection Backup Vault\u003cbr\u003eThe deployment enables configuration of storage redundancy, soft delete settings, immutability options, and optional diagnostic integration.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003eAn active Azure subscription\u003cbr\u003eAzure PowerShell installed\u003cbr\u003eAuthenticated session using Azure PowerShell\u003cbr\u003eSufficient permissions to create resources in the target resource group\u003cbr\u003eA target resource group must already exist\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePackage Contents\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json\u003c\/span\u003e\u003cbr\u003eDefines the Backup Vault resource and its configuration\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e\u003cbr\u003eContains required input values for deployment\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1\u003c\/span\u003e\u003cbr\u003eScript used to execute the deployment\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eREADME.md\u003c\/span\u003e\u003cbr\u003eDocumentation describing the deployment\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eParameters\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003ebackupVaultName\u003c\/span\u003e\u003cbr\u003eSpecifies the name of the Backup Vault\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003estorageRedundancy\u003c\/span\u003e\u003cbr\u003eDefines the redundancy level\u003cbr\u003eOptions include LocallyRedundant, ZoneRedundant, or GeoRedundant\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003esoftDeleteState\u003c\/span\u003e\u003cbr\u003eControls soft delete behavior\u003cbr\u003eRecommended setting is AlwaysOn\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eimmutabilityState\u003c\/span\u003e\u003cbr\u003eDefines immutability configuration\u003cbr\u003eOptions include Disabled, Unlocked, or Locked\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eenableDiagnostics\u003c\/span\u003e\u003cbr\u003eEnables integration with Log Analytics if configured\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eNotes\u003c\/strong\u003e\u003cbr\u003eBackup Vault names must be unique within Azure\u003cbr\u003eDiagnostics are optional and may introduce additional cost\u003cbr\u003eAn immutability set to Locked cannot be reversed\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat You Should See After Deployment\u003c\/strong\u003e\u003cbr\u003eAn Azure Data Protection Backup Vault created in the specified resource group\u003cbr\u003eThe vault is configured with the selected redundancy and security settings\u003cbr\u003eSoft delete enabled if configured\u003cbr\u003eImmutability is applied based on the selected state\u003cbr\u003eDiagnostic settings enabled if specified\u003cbr\u003eThe vault ready for backup policy configuration and data protection operations\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis template provides a production-ready deployment of an Azure Backup Vault. Successful deployment depends on correct parameter values and proper configuration of the required Azure environment.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eet\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eWebsite: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport Hours:\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"font-family: 'Univers Condensed', sans-serif; color: rgb(43, 0, 255);\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42835957022818,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_dbf415f2-ab8c-4ee8-a598-87ab58f2a172.png?v=1777301924"},{"product_id":"azure-container-apps-arm-template-ready-to-deploy-reusable-solution","title":"Azure Container Apps ARM Template Ready-to-Deploy Reusable Solution","description":"\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-2026_ARM_ITCloudAcademy_Logo_597c5d71-6d33-4e22-9621-0963a38a0b42.png?v=1777097654\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverview\u003c\/strong\u003e\u003cbr\u003eThis repository provides an Azure Resource Manager (ARM) template for deploying an Azure Container Apps environment along with a containerized application. The template is designed for consistent, repeatable deployment of container-based workloads.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat This Template Deploys\u003c\/strong\u003e\u003cbr\u003eAzure Container Apps Environment (Managed Environment)\u003cbr\u003eAzure Container App\u003cbr\u003eOptional integration with Azure Log Analytics for monitoring and diagnostics\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eKey Features\u003c\/strong\u003e\u003cbr\u003eAutomated deployment using ARM\u003cbr\u003eSupport for public ingress configuration\u003cbr\u003eConfigurable CPU and memory allocation\u003cbr\u003eBuilt-in scaling configuration with minimum and maximum replicas\u003cbr\u003eOptional Log Analytics integration\u003cbr\u003eParameter-driven and reusable design\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePrerequisites\u003c\/strong\u003e\u003cbr\u003eAn active Azure subscription\u003cbr\u003eAn existing resource group\u003cbr\u003eAzure CLI installed or access to Azure Cloud Shell\u003cbr\u003eAuthenticated Azure session\u003cbr\u003ePermissions to create resources in the target resource group\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePackage Contents\u003c\/strong\u003e\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003etemplate.json\u003c\/span\u003e\u003cbr\u003eDefines the Azure Container Apps environment and application\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e\u003cbr\u003eContains configurable values such as names, container image, and scaling settings\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003edeploy.ps1\u003c\/span\u003e\u003cbr\u003eScript used to execute the deployment\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eREADME.md\u003c\/span\u003e\u003cbr\u003eDocumentation describing the deployment\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eConfiguration\u003c\/strong\u003e\u003c\/span\u003e\u003cbr\u003eUpdate the \u003cspan style=\"color: rgb(43, 0, 255);\"\u003eparameters.json\u003c\/span\u003e file with Environment-Specific Values, including\u003cbr\u003eContainer App Name\u003cbr\u003eContainer Apps Environment Name\u003cbr\u003eContainer Image\u003cbr\u003eCPU and Memory Allocation\u003cbr\u003eScaling Configuration\u003cbr\u003eTags\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeployment\u003c\/strong\u003e\u003cbr\u003eExecute the Deployment Script and Specify the Target Resource Group\u003cbr\u003eExample\u003cbr\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003e.\/deploy.ps1 -ResourceGroupName \u0026lt;your-resource-group\u0026gt;\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWhat You Should See After Deployment\u003c\/strong\u003e\u003cbr\u003eAn Azure Container Apps Environment created in the specified resource group\u003cbr\u003eA running Azure Container App deployed using the specified container image\u003cbr\u003eA public endpoint available if ingress is enabled\u003cbr\u003eConfigured scaling behavior based on defined replica settings\u003cbr\u003eOptional monitoring enabled if Log Analytics is configured\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSummary\u003c\/strong\u003e\u003cbr\u003eThis template provides a production-ready and repeatable deployment for Azure Container Apps. Successful deployment depends on valid parameter values and proper configuration of the Azure environment.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eFor questions or custom template requests, please contact:\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eITCloudAcademy Support Team\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003esupport@ITCloudAcademy.n\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003eet\u003cbr\u003eEmail: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003einfo@ITCloudAcademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eWebsite: \u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; color: #2b00ff;\"\u003ehttp:\/\/www.itcloudacademy.net\u003c\/span\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif; mso-bidi-font-weight: normal;\"\u003eSupport Hours:\u003c\/span\u003e\u003c\/strong\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cbr\u003eMonday to Friday\u003cbr\u003e9:00 AM to 6:00 PM MST\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"font-family: 'Univers Condensed',sans-serif;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-24-26_Custom_Azure_ARM_Templates_Service.jpg?v=1777096687\" alt=\"\"\u003e\u003c\/span\u003e\u003ca href=\"https:\/\/www.itcloudacademy.net\/collections\/azure-custom-arm-templates\"\u003e\u003cspan style=\"font-family: 'Univers Condensed', sans-serif; color: rgb(43, 0, 255);\"\u003eNeed a custom Azure ARM template? Visit our Azure Custom ARM Templates page for details and services.\u003c\/span\u003e\u003c\/a\u003e\u003c\/p\u003e","brand":"ITCloudAcademy","offers":[{"title":"Default Title","offer_id":42835967574114,"sku":null,"price":25.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/files\/4-23-2026ReusableAzureARMTemplates_f5f70378-4b3c-4033-ade7-360895e1f026.png?v=1777303059"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0666\/7884\/9634\/collections\/4-23-2026_Reusable_Azure_ARM_Templates.png?v=1777005543","url":"https:\/\/www.itcloudacademy.net\/collections\/azure-reusable-arm-templates-ready-to-deploy-infrastructure-solutions.oembed","provider":"ITCloudAcademy","version":"1.0","type":"link"}