-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDeployFunction.ps1
126 lines (112 loc) · 3.7 KB
/
DeployFunction.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
Import-Module az.storage
Import-module az.websites
@('Microsoft.Web', 'Microsoft.Storage') | ForEach-Object {
Register-AzResourceProvider -ProviderNamespace $_
}
$resourceGroupName = 'refresh19'
$location = 'westeurope'
$resourceGroup = Get-AzResourceGroup -Name $resourceGroupName -ErrorAction SilentlyContinue
if (!$resourceGroup) {
try {
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location -ErrorAction stop
}
Catch {
$_.Exception.Message
exit
}
}
Try {
$storageAccountName = "refresh19$((New-Guid).ToString().Split('-')[0])"
$storageSku = 'Standard_LRS'
$storageParams = @{
ResourceGroupName = $resourceGroupName
AccountName = $storageAccountName
Location = $location
SkuName = $storageSku
}
$storageAccount = New-AzStorageAccount @storageParams -ErrorAction stop
}
Catch {
$_.Exception.Message
exit
}
try {
$key1 = (Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -AccountName $storageAccountName -ErrorAction stop).value[0]
$storageConnectionString = "DefaultEndpointsProtocol=https;AccountName=$storageAccountName;AccountKey=$key1"
$functionAppName = 'Tier2Example'
$newFunctionAppParams = @{
ResourceType = 'Microsoft.Web/Sites'
ResourceName = $functionAppName
Kind = 'functionapp'
Location = $location
ResourceGroupName = $resourceGroupName
Properties = @{ }
Force = $true
}
$functionApp = New-AzResource @newFunctionAppParams -ErrorAction stop
}
catch {
$_.Exception.Message
exit
}
try {
$functionAppSettings = @{
AzureWebJobDashboard = $storageConnectionString
AzureWebJobsStorage = $storageConnectionString
FUNCTIONS_EXTENSION_VERSION = '~1'
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING = $storageConnectionString
WEBSITE_CONTENTSHARE = $storageAccountName
}
$setWebAppParams = @{
Name = $functionAppName
ResourceGroupName = $resourceGroupName
AppSettings = $functionAppSettings
}
$webApp = Set-AzWebApp @setWebAppParams -ErrorAction stop
}
catch {
$_.Exception.Message
exit
}
Try {
#Deploy the Tier2Example code
$functionName = 'Tier2Example'
$functionContent = Get-Content ./Tier2Example/run.ps1 -raw -ErrorAction stop
$functionSettings = Get-Content ./Tier2Example/function.json -ErrorAction stop | ConvertFrom-Json
$functionResourceId = '{0}/functions/{1}' -f $functionapp.resourceid, $functionName
$functionProperties = @{
config = @{bindings = $functionSettings.bindings
}
files = @{
'run.ps1' = "$functionContent"
}
}
$newFunctionParams = @{
ResourceID = $functionResourceId
Properties = $functionProperties
Apiversion = '2015-08-01'
Force = $true
}
$function = New-AzResource @NewfunctionParams -ErrorAction stop
}
catch {
$_.Exception.Message
exit
}
try {
$functionParams = @{
ResourceId = $function.ResourceId
Action = 'listsecrets'
ApiVersion = '2015-08-01'
Force = $true
}
$functionTrigger = Invoke-AzResourceAction @functionParams -ErrorAction Stop
#$functionTrigger.trigger_url
}
catch {
$_.Exception.Message
Write-output "Error retrieving trigger URL. Please visit the Azure Portal"
}
Write-Output "Deployment finished"
Write-Output "Your deployment trigger URL: $($functionTrigger.trigger_url)"
$($functionTrigger.trigger_url) | Add-content triggerUrl.txt