File size: 3,036 Bytes
80db45a 9595e1d 80db45a 9595e1d 80db45a 9595e1d 80db45a 9595e1d 9a1de81 9595e1d 80db45a |
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 |
targetScope = 'subscription'
@minLength(1)
@maxLength(64)
@description('Name which is used to generate a short unique hash for each resource')
param name string
@minLength(1)
@description('Primary location for all resources')
param location string
@secure()
@description('PostGreSQL Server administrator password')
param databasePassword string
var resourceToken = toLower(uniqueString(subscription().id, name, location))
var tags = { 'azd-env-name': name }
resource resourceGroup 'Microsoft.Resources/resourceGroups@2021-04-01' = {
name: '${name}-rg'
location: location
tags: tags
}
var prefix = '${name}-${resourceToken}'
var postgresServerName = '${prefix}-postgresql'
module virtualNetwork 'core/security/virtualnetwork.bicep' = {
name: 'virtualnetwork'
scope: resourceGroup
params: {
name: '${prefix}-vnet'
location: location
tags: tags
postgresServerName: postgresServerName
}
}
var databaseName = 'django'
var databaseUser = 'django'
module postgresServer 'core/database/postgresql/flexibleserver.bicep' = {
name: 'postgresql'
scope: resourceGroup
params: {
name: postgresServerName
location: location
tags: tags
sku: {
name: 'Standard_B1ms'
tier: 'Burstable'
}
storage: {
storageSizeGB: 32
}
version: '13'
administratorLogin: databaseUser
administratorLoginPassword: databasePassword
databaseName: databaseName
delegatedSubnetResourceId: virtualNetwork.outputs.databaseSubnetId
privateDnsZoneArmResourceId: virtualNetwork.outputs.privateDnsZoneId
privateDnsZoneLink: virtualNetwork.outputs.privateDnsZoneLink
}
}
module web 'core/host/appservice.bicep' = {
name: 'appservice'
scope: resourceGroup
params: {
name: '${prefix}-appservice'
location: location
tags: union(tags, { 'azd-service-name': 'web' })
appServicePlanId: appServicePlan.outputs.id
runtimeName: 'python'
runtimeVersion: '3.10'
scmDoBuildDuringDeployment: true
ftpsState: 'Disabled'
managedIdentity: true
appCommandLine: 'python manage.py migrate && gunicorn --workers 2 --threads 4 --timeout 60 --access-logfile \'-\' --error-logfile \'-\' --bind=0.0.0.0:8000 --chdir=/home/site/wwwroot quizsite.wsgi'
virtualNetwork: virtualNetwork
subnetResourceId: virtualNetwork.outputs.webSubnetId
appSettings: {
DBHOST: postgresServerName
DBNAME: databaseName
DBUSER: databaseUser
DBPASS: databasePassword
}
}
}
module appServicePlan 'core/host/appserviceplan.bicep' = {
name: 'serviceplan'
scope: resourceGroup
params: {
name: '${prefix}-serviceplan'
location: location
tags: tags
sku: {
name: 'B1'
}
reserved: true
}
}
module logAnalyticsWorkspace 'core/monitor/loganalytics.bicep' = {
name: 'loganalytics'
scope: resourceGroup
params: {
name: '${prefix}-loganalytics'
location: location
tags: tags
}
}
output WEB_URI string = 'https://${web.outputs.uri}'
output AZURE_LOCATION string = location
|