-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathctfd.bicep
138 lines (117 loc) · 3.81 KB
/
ctfd.bicep
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
127
128
129
130
131
132
133
134
135
136
137
138
param nameUniquenss string = uniqueString(resourceGroup().id)
@description('Deploy with VNet')
param vnet bool = true
@description('Server Name for Azure cache for Redis')
param redisServerName string = 'ctfd-redis-${nameUniquenss}'
@description('Server Name for Azure database for MariaDB')
param mariaServerName string = 'ctfd-mariadb-${nameUniquenss}'
@description('Database administrator login name')
@minLength(1)
param administratorLogin string = 'ctfd'
@description('Database administrator password')
@minLength(8)
@secure()
param administratorLoginPassword string
@description('Name of Azure Key Vault')
param keyVaultName string = 'ctfd-kv-${nameUniquenss}'
@description('Server Name for Azure app service')
param appServicePlanName string = 'ctfd-server-${nameUniquenss}'
@description('App Service Plan SKU tier')
param appServicePlanSkuTier string = 'Basic'
@description('App Service Plan SKU name')
param appServicePlanSkuName string = 'B1'
@description('Name for Azure Web app')
param webAppName string = 'ctfd-app-${nameUniquenss}'
@description('Name for Log Analytics Workspace')
param logAnalyticsName string = 'ctfd-log-analytics-${nameUniquenss}'
@description('Name of the VNet')
param virtualNetworkName string = 'ctf-vnet'
@description('Location for all resources.')
param resourcesLocation string = resourceGroup().location
var resourcesSubnetName = 'resources_subnet'
var integrationSubnetName = 'integration_subnet'
var ctfCacheSecretName = 'ctfd-cache-url'
var ctfDatabaseSecretName = 'ctfd-db-url'
// Scope
targetScope = 'resourceGroup'
module vnetModule 'modules/vnet.bicep' = if (vnet) {
name: 'vnetDeploy'
params: {
location: resourcesLocation
integrationSubnetName: integrationSubnetName
resouorcesSubnetName: resourcesSubnetName
virtualNetworkName: virtualNetworkName
}
}
module logAnalyticsModule 'modules/loganalytics.bicep' = {
name: 'logAnalyticsDeploy'
params: {
appName: webAppName
logAnalyticsName: logAnalyticsName
location: resourcesLocation
}
}
module ctfWebAppModule 'modules/webapp.bicep' = {
name: 'ctfDeploy'
dependsOn: [ vnetModule ]
params: {
virtualNetworkName: virtualNetworkName
location: resourcesLocation
appServicePlanName: appServicePlanName
appServicePlanSkuName: appServicePlanSkuName
appServicePlanSkuTier: appServicePlanSkuTier
keyVaultName: keyVaultName
ctfCacheUrlSecretName: ctfCacheSecretName
ctfDatabaseUrlSecretName: ctfDatabaseSecretName
integrationSubnetName: integrationSubnetName
webAppName: webAppName
logAnalyticsWorkspaceId: logAnalyticsModule.outputs.logAnalyticsWorkspaceId
vnet: vnet
}
}
module akvModule 'modules/keyvault.bicep' = {
name: 'keyVaultDeploy'
dependsOn: [ ctfWebAppModule ]
params: {
keyVaultName: keyVaultName
location: resourcesLocation
readerPrincipalId: ctfWebAppModule.outputs.servicePrincipalId
resourcesSubnetName: resourcesSubnetName
virtualNetworkName: virtualNetworkName
vnet: vnet
}
}
module redisModule 'modules/redis.bicep' = {
name: 'redisDeploy'
dependsOn: [
vnetModule
akvModule
]
params: {
redisServerName: redisServerName
virtualNetworkName: virtualNetworkName
resourcesSubnetName: resourcesSubnetName
location: resourcesLocation
vnet: vnet
ctfCacheSecretName: ctfCacheSecretName
keyVaultName: keyVaultName
}
}
module mariaDbModule 'modules/mariadb.bicep' = {
name: 'mariaDbDeploy'
dependsOn: [
vnetModule
akvModule
]
params: {
mariaServerName: mariaServerName
administratorLogin: administratorLogin
administratorLoginPassword: administratorLoginPassword
virtualNetworkName: virtualNetworkName
resourcesSubnetName: resourcesSubnetName
location: resourcesLocation
vnet: vnet
ctfDbSecretName: ctfDatabaseSecretName
keyVaultName: keyVaultName
}
}