Bicep CLI - Azure PowerShell uses Bicep automatically, but ensure you have the latest version:
1
azbicepupgrade
Azure Subscription - You need an Azure subscription with appropriate permissions to create resources.
Authentication
Azure Commercial
1
2
3
4
5
# Connect to Azure CommercialConnect-AzAccount# Select your subscriptionSet-AzContext-SubscriptionId"<your-subscription-id>"
Azure Government
1
2
3
4
5
# Connect to Azure GovernmentConnect-AzAccount-EnvironmentAzureUSGovernment# Select your subscriptionSet-AzContext-SubscriptionId"<your-subscription-id>"
Deployment Templates
Template
Description
automationaccount-spark.bicep
Azure Automation Account with runbooks, modules, and variables
function-app-spark.bicep
Azure Function App for Spark
sql.bicep
Azure SQL Database
Deploying the Automation Account
If multiple Automation accounts are needed just run the script with different names
# Set variables$resourceGroupName="rg-spark-dev"$location="eastus2"# Create resource group if it doesn't existNew-AzResourceGroup-Name$resourceGroupName-Location$location-Force# Get the certificate base64 value$certBase64=Get-Content-Path"path/to/certificate.pfx"-AsByteStream|ForEach-Object{[Convert]::ToBase64String($_)}$certBase64Secure=ConvertTo-SecureString-String$certBase64-AsPlainText-Force# Deploy using parameter fileNew-AzResourceGroupDeployment`
-ResourceGroupName$resourceGroupName`
-TemplateFile".\automationaccount-spark.bicep"`
-TemplateParameterFile".\automationaccount.bicepparam"`
-sendMailCertificateBase64Value$certBase64Secure`
-Verbose
# Connect to Azure Government firstConnect-AzAccount-EnvironmentAzureUSGovernment# Set variables$resourceGroupName="rg-spark-prod"$location="usgovvirginia"# Create resource group if it doesn't existNew-AzResourceGroup-Name$resourceGroupName-Location$location-Force# Get the certificate base64 value$certBase64=Get-Content-Path"path/to/certificate.pfx"-AsByteStream|ForEach-Object{[Convert]::ToBase64String($_)}$certBase64Secure=ConvertTo-SecureString-String$certBase64-AsPlainText-Force# Deploy using parameter fileNew-AzResourceGroupDeployment`
-ResourceGroupName$resourceGroupName`
-TemplateFile".\automationaccount-spark.bicep"`
-TemplateParameterFile".\automationaccount.bicepparam"`
-sendMailCertificateBase64Value$certBase64Secure`
-Verbose
After deploying the Function App infrastructure using function-app-spark.bicep, you need to deploy the actual function code from /assets/12-function-apps.
Option 1: Using the PowerShell Deployment Script (Recommended)
The simplest approach is to use the provided deployment script:
1
2
3
4
5
6
7
8
9
10
11
12
13
# Navigate to the function apps foldercd../assets/12-function-apps# Deploy to Azure Commercial.\Deploy-FunctionApp.ps1`
-FunctionAppName"fx-spark-prod"`
-ResourceGroupName"rg-spark-prod"# Deploy to Azure Government.\Deploy-FunctionApp.ps1`
-FunctionAppName"fx-spark-gov"`
-ResourceGroupName"rg-spark-gov"`
-AzureEnvironment"AzureUSGovernment"
Function App Structure
The deployment creates the following HTTP-triggered functions: