<#
|
|
.SYNOPSIS
|
|
Deploys a template to Azure
|
|
|
|
.DESCRIPTION
|
|
Deploys an Azure Resource Manager template
|
|
|
|
.PARAMETER subscriptionId
|
|
The subscription id where the template will be deployed.
|
|
|
|
.PARAMETER resourceGroupName
|
|
The resource group where the template will be deployed. Can be the name of an existing or a new resource group.
|
|
|
|
.PARAMETER resourceGroupLocation
|
|
Optional, a resource group location. If specified, will try to create a new resource group in this location. If not specified, assumes resource group is existing.
|
|
|
|
.PARAMETER deploymentName
|
|
The deployment name.
|
|
|
|
.PARAMETER templateFilePath
|
|
Optional, path to the template file. Defaults to template.json.
|
|
|
|
.PARAMETER parametersFilePath
|
|
Optional, path to the parameters file. Defaults to parameters.json. If file is not found, will prompt for parameter values based on template.
|
|
#>
|
|
|
|
param(
|
|
[Parameter(Mandatory=$True)]
|
|
[string]
|
|
$subscriptionId,
|
|
|
|
[Parameter(Mandatory=$True)]
|
|
[string]
|
|
$resourceGroupName,
|
|
|
|
[string]
|
|
$resourceGroupLocation,
|
|
|
|
[Parameter(Mandatory=$True)]
|
|
[string]
|
|
$deploymentName,
|
|
|
|
[string]
|
|
$templateFilePath = "mesh_rp.linux.json",
|
|
|
|
[string]
|
|
$parametersFilePath = "parameters.json"
|
|
)
|
|
|
|
<#
|
|
.SYNOPSIS
|
|
Registers RPs
|
|
#>
|
|
Function RegisterRP {
|
|
Param(
|
|
[string]$ResourceProviderNamespace
|
|
)
|
|
|
|
Write-Host "Registering resource provider '$ResourceProviderNamespace'";
|
|
Register-AzureRmResourceProvider -ProviderNamespace $ResourceProviderNamespace;
|
|
}
|
|
|
|
#******************************************************************************
|
|
# Script body
|
|
# Execution begins here
|
|
#******************************************************************************
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
# sign in
|
|
Write-Host "Logging in...";
|
|
Login-AzureRmAccount;
|
|
|
|
# select subscription
|
|
Write-Host "Selecting subscription '$subscriptionId'";
|
|
Select-AzureRmSubscription -SubscriptionID $subscriptionId;
|
|
|
|
# Register RPs
|
|
$resourceProviders = @();
|
|
if($resourceProviders.length) {
|
|
Write-Host "Registering resource providers"
|
|
foreach($resourceProvider in $resourceProviders) {
|
|
RegisterRP($resourceProvider);
|
|
}
|
|
}
|
|
|
|
#Create or check for existing resource group
|
|
$resourceGroup = Get-AzureRmResourceGroup -Name $resourceGroupName -ErrorAction SilentlyContinue
|
|
if(!$resourceGroup)
|
|
{
|
|
Write-Host "Resource group '$resourceGroupName' does not exist. To create a new resource group, please enter a location.";
|
|
if(!$resourceGroupLocation) {
|
|
$resourceGroupLocation = Read-Host "resourceGroupLocation";
|
|
}
|
|
Write-Host "Creating resource group '$resourceGroupName' in location '$resourceGroupLocation'";
|
|
New-AzureRmResourceGroup -Name $resourceGroupName -Location $resourceGroupLocation
|
|
}
|
|
else{
|
|
Write-Host "Using existing resource group '$resourceGroupName'";
|
|
}
|
|
|
|
# Start the deployment
|
|
Write-Host "Starting deployment...";
|
|
if(Test-Path $parametersFilePath) {
|
|
New-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile $templateFilePath -TemplateParameterFile $parametersFilePath;
|
|
} else {
|
|
New-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile $templateFilePath;
|
|
}
|