AzureBicep.psm1

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


function Create-AppService  {

    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true)]
        [string]
        $Subscription,

        [Parameter(Mandatory=$true)]
        [string]
        $resourceGroup,

        [Parameter(Mandatory=$true)]
        [string]
        $deploymentName,
        
        [Parameter(Mandatory=$true)]
        [string[]]
        $applicationName,

        [string]
        $applicationInsights,

        [Parameter(Mandatory=$true)]
        [string]
        $appServicePlan,

        [switch]
        $doNotMonitorApp,

        [ValidateSet("v3.0","v4.0","v5.0","v6.0")]
        $netFrameworkVersion = "v5.0",

        [ValidateSet("dotnet", "dotnetcore")]
        $dotNetType = "dotnet",

        [string]
        $vNetName = '',

        [string]
        $subnetName,

        [bool]
        $use32Bit = $true


    )

    Set-AzContext -Subscription $Subscription | Out-Null

    if($dotNetType -eq "dotnetcore")
    {
        $netFrameworkVersion = "v3.0"
    }
     
    foreach($appName in $applicationName)
    {
        if($doNotMonitorApp)
        {
            $bicepFolder = New-Item -Path $HOME\Documents -Name Bicep -ItemType Directory
            Invoke-WebRequest -Uri "https://raw.githubusercontent.com/baantelope/Bicep/1a34bafb7e5cb6591420dfc7cb4194b61027e3aa/AppServiceNoAI.bicep" -OutFile $bicepFolder\AppServiceNoAI.bicep 

            New-AzResourceGroupDeployment -Name $deploymentName -ResourceGroupName $resourceGroup -TemplateFile $bicepFolder\AppServiceNoAI.bicep -appName $appName -aspName $appServicePlan -netFrameworkVersion $netFrameworkVersion `
            -dotnettype $dotNetType -vNetName $vNetName -subnetName $subnetName -use32bit $use32Bit

            Remove-Item -Path $bicepFolder -Recurse -Force
        }
        else {
            $bicepFolder = New-Item -Path $HOME\Documents -Name Bicep -ItemType Directory
            Invoke-WebRequest -Uri "https://raw.githubusercontent.com/baantelope/Bicep/1a34bafb7e5cb6591420dfc7cb4194b61027e3aa/AppService.bicep" -OutFile $bicepFolder\AppService.bicep

            New-AzResourceGroupDeployment -Name $deploymentName -ResourceGroupName $resourceGroup -TemplateFile $bicepFolder\AppService.bicep -appName $appName -aiName $applicationInsights -aspName $appServicePlan -netFrameworkVersion $netFrameworkVersion `
            -dotnettype $dotNetType -vNetName $vNetName -subnetName $subnetName -use32bit $use32Bit

            Remove-Item -Path $bicepFolder -Recurse -Force
        }
        
    }    
}

Export-ModuleMember -Function Create-AppService