Last active
May 19, 2020 14:06
-
-
Save rithala/9a8207c193d82acf07aac8837e046ba1 to your computer and use it in GitHub Desktop.
Deploy Az Function PowerShell
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#=============Defining All Variables========= | |
$location = 'West Europe' | |
$resourceGroupName = 'functionrgnew1' | |
$storageAccount = 'functionsasdnewqq1' | |
$subscriptionId = '<id>' | |
$functionAppName = 'functionapppsdfsdnew1' | |
$appInsightsName = 'appinsightnameprdad' | |
$appServicePlanName = 'functionappplan' | |
$appPackage = '.\package.zip' | |
$tier = 'Dynamic' | |
$sku = 'Y1' | |
$webAppApiVersion = '2015-08-01' | |
#========Creating Azure Resource Group======== | |
$resourceGroup = Get-AzResourceGroup | Where-Object { $_.ResourceGroupName -eq $resourceGroupName } | |
if ($resourceGroup -eq $null) | |
{ | |
New-AzResourceGroup -Name $resourceGroupName -Location $location -force | |
} | |
#selecting default azure subscription by name | |
Select-AzSubscription -SubscriptionID $subscriptionId | |
Set-AzContext $subscriptionId | |
#========Creating Azure Storage Account======== | |
if(!(Test-AzureName -Storage $storageAccount)) | |
{ | |
New-AzStorageAccount -ResourceGroupName $resourceGroupName -AccountName $storageAccount -Location $location -SkuName "Standard_LRS" | |
} | |
#========Creating App Service Plan============ | |
$servicePlanSettings = @{ | |
location = $location | |
sku = @{ | |
name = $sku; | |
tier = $tier; | |
} | |
} | |
$plan = Get-AzureRmAppServicePlan -Name $appServicePlanName -ResourceGroupName $resourceGroupName -ErrorAction SilentlyContinue | |
if(-not $plan) { | |
New-AzureRmResource -ResourceGroupName $resourceGroupName -ResourceType "Microsoft.Web/serverfarms" -Name $appServicePlanName -IsFullObject -PropertyObject $fullObject -ApiVersion $webAppApiVersion -Force | |
} | |
#========Creating Azure Function======== | |
$functionAppResource = Get-AzResource | Where-Object { $_.ResourceName -eq $functionAppName -And $_.ResourceType -eq "Microsoft.Web/Sites" } | |
if ($functionAppResource -eq $null) | |
{ | |
New-AzResource -ResourceType 'Microsoft.Web/Sites' -ResourceName $functionAppName -kind 'functionapp' -Location $location -ResourceGroupName $resourceGroupName -Properties $functionAppSettings -force | |
} | |
#========Creating AppInsight Resource======== | |
New-AzApplicationInsights -ResourceGroupName $resourceGroupName -Name $appInsightsName -Location $location | |
$resource = Get-AzResource -Name $appInsightsName -ResourceType "Microsoft.Insights/components" | |
$details = Get-AzResource -ResourceId $resource.ResourceId | |
$appInsightsKey = $details.Properties.InstrumentationKey | |
#========Retrieving Keys======== | |
$keys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -AccountName $storageAccount | |
$accountKey = $keys | Where-Object { $_.KeyName -eq 'Key1' } | Select-Object -ExpandProperty Value | |
$storageAccountConnectionString = 'DefaultEndpointsProtocol=https;AccountName='+$storageAccount+';AccountKey='+$accountKey | |
#========Defining Azure Function Settings======== | |
$AppSettings =@{} | |
$AppSettings =@{'APPINSIGHTS_INSTRUMENTATIONKEY' = $appInsightsKey; | |
'AzureWebJobDashboard' = $storageAccountConnectionString; | |
'AzureWebJobStorage' = $storageAccountConnectionString; | |
'FUNCTIONS_EXTENSION_VERSION' = '~2'; | |
'FUNCTIONS_WORKER_RUNTIME' = 'dotnet'; | |
'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING' = $storageAccountConnectionString; | |
'WEBSITE_CONTENTSHARE' = $storageAccount; | |
'WEBSITE_RUN_FROM_PACKAGE' = 1;} | |
Set-AzWebApp -Name $functionAppName -ResourceGroupName $resourceGroupName -AppSettings $AppSettings | |
Publish-AzWebApp -Name $functionAppName -ResourceGroupName $resourceGroupName -ArchivePath $appPackage |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment