This repository has been archived on 2022-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
DevOpsOpenHack/iac/bicep/apps.bicep

148 lines
4.3 KiB
Bicep
Raw Normal View History

2022-11-03 20:41:13 +00:00
param resourcesPrefix string
param sqlServerFqdn string
param sqlServerName string
param sqlServerAdminPassword string
param containerRegistryLoginServer string
param containerRegistryName string
param userAssignedManagedIdentityId string
param userAssignedManagedIdentityPrincipalId string
var location = resourceGroup().location
var varfile = json(loadTextContent('./variables.json'))
// https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles
// Contributor
var contributorRoleDefinitionId = subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
resource sqlServer 'Microsoft.Sql/servers@2021-02-01-preview' existing = {
name: sqlServerName
}
// https://docs.microsoft.com/en-us/azure/templates/microsoft.authorization/roleassignments?tabs=bicep
resource sqlContributorRoleAssignment 'Microsoft.Authorization/roleAssignments@2020-08-01-preview' = {
name: guid(resourceGroup().id, sqlServer.id, userAssignedManagedIdentityId, contributorRoleDefinitionId)
scope: sqlServer
properties: {
roleDefinitionId: contributorRoleDefinitionId
principalId: userAssignedManagedIdentityPrincipalId
}
}
// https://docs.microsoft.com/en-us/azure/templates/microsoft.resources/deploymentscripts?tabs=bicep
resource dataInit 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
name: '${resourcesPrefix}dataInit'
location: location
kind: 'AzureCLI'
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${userAssignedManagedIdentityId}': {}
}
}
properties: {
azCliVersion: '2.33.1'
cleanupPreference: 'Always'
containerSettings: {
containerGroupName: '${resourcesPrefix}datainit'
}
scriptContent: loadTextContent('datainit.sh')
environmentVariables: [
{
name: 'SQL_SERVER_NAME'
value: sqlServerName
}
{
name: 'SQL_SERVER_FQDN'
value: sqlServerFqdn
}
{
name: 'SQL_ADMIN_LOGIN'
value: varfile.sqlServerAdminLogin
}
{
name: 'SQL_ADMIN_PASSWORD'
secureValue: sqlServerAdminPassword
}
{
name: 'SQL_DB_NAME'
value: 'mydrivingDB'
}
{
name: 'RESOURCE_GROUP'
value: resourceGroup().name
}
{
name: 'TEAM_REPO'
value: varfile.publicTeamRepo
}
{
name: 'TEAM_REPO_BRANCH'
value: varfile.publicTeamRepoBranch
}
]
retentionInterval: 'PT1H'
timeout: 'PT15M'
}
dependsOn: [
sqlContributorRoleAssignment
]
}
// https://docs.microsoft.com/en-us/azure/templates/microsoft.containerregistry/registries?tabs=bicep
resource containerRegistry 'Microsoft.ContainerRegistry/registries@2021-09-01' existing = {
name: containerRegistryName
}
// https://docs.microsoft.com/en-us/azure/templates/microsoft.authorization/roleassignments?tabs=bicep
resource acrContributorRoleAssignment 'Microsoft.Authorization/roleAssignments@2020-08-01-preview' = {
name: guid(resourceGroup().id, containerRegistry.id, userAssignedManagedIdentityId, contributorRoleDefinitionId)
scope: containerRegistry
properties: {
roleDefinitionId: contributorRoleDefinitionId
principalId: userAssignedManagedIdentityPrincipalId
}
}
//https://docs.microsoft.com/en-us/azure/templates/microsoft.resources/deploymentscripts?tabs=bicep
resource dockerBuild 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
name: '${resourcesPrefix}dockerBuild'
location: location
kind: 'AzureCLI'
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${userAssignedManagedIdentityId}': {}
}
}
properties: {
azCliVersion: '2.33.1'
cleanupPreference: 'Always'
containerSettings: {
containerGroupName: '${resourcesPrefix}dockerdbuild'
}
scriptContent: loadTextContent('dockerbuild.sh')
environmentVariables: [
{
name: 'CONTAINER_REGISTRY'
value: containerRegistryLoginServer
}
{
name: 'BASE_IMAGE_TAG'
value: varfile.baseImageTag
}
{
name: 'TEAM_REPO'
value: varfile.publicTeamRepo
}
{
name: 'TEAM_REPO_BRANCH'
value: varfile.publicTeamRepoBranch
}
]
retentionInterval: 'P1D'
}
dependsOn: [
acrContributorRoleAssignment
]
}