forked from geekzter/azure-minecraft-docker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfigure_functions_client.ps1
executable file
·66 lines (56 loc) · 2.39 KB
/
configure_functions_client.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
#!/usr/bin/env pwsh
<#
.SYNOPSIS
Grants access to given AAD user/service principal name
#>
#Requires -Version 7
param (
[parameter(mandatory=$false)][string]$ConfigurationName="primary"
)
. (Join-Path $PSScriptRoot functions.ps1)
if (!(Get-Command func -ErrorAction SilentlyContinue)) {
Write-Warning "Azure Function Tools not found, exiting..."
exit
}
try {
$tfdirectory = $(Join-Path (Split-Path -Parent -Path $PSScriptRoot) "terraform")
Push-Location $tfdirectory
$minecraftConfig = (terraform output -json minecraft | ConvertFrom-Json -AsHashtable)
$subscriptionID = (Get-TerraformOutput "subscription_guid")
az account set -s $subscriptionID # Required as func ignores --subscription
$functionDirectory = $(Join-Path (Split-Path -Parent -Path $PSScriptRoot) "functions")
Push-Location $functionDirectory
if ($minecraftConfig) {
$minecraft = $minecraftConfig[$ConfigurationName]
$minecraftFQDN = $minecraft.minecraft_server_fqdn
$minecraftPort = $minecraft.minecraft_server_port
$functionName = $minecraft.function_name
if (!($minecraftFQDN)) {
Write-Warning "Minecraft FQDN not in Terraform output, has Minecraft Server been provisioned yet?"
continue
}
if (!($minecraftPort)) {
Write-Warning "Minecraft port not in Terraform output, has Minecraft Server been provisioned yet?"
continue
}
if (!($functionName)) {
Write-Warning "Function not in Terraform output, has Function been provisioned yet?"
continue
}
Write-Debug "Function name: ${functionName}"
Write-Host "`nFetching settings for function ${functionName}..."
func azure functionapp fetch-app-settings $functionName --subscription $subscriptionID
$localSettingsFile = (Join-Path $functionDirectory "local.settings.json")
if (Test-Path $localSettingsFile) {
$localSettings = (Get-Content ./local.settings.json | ConvertFrom-Json -AsHashtable)
$localSettings.Values["MINECRAFT_FQDN"] = $minecraftFQDN
$localSettings.Values["MINECRAFT_PORT"] = $minecraftPort
$localSettings | ConvertTo-Json | Out-File $localSettingsFile
} else {
Write-Warning "${localSettingsFile} not found"
}
}
Pop-Location
} finally {
Pop-Location
}