Skip to content

Commit b7ba5a1

Browse files
committed
feat: added azure key vault
1 parent f9c6e8f commit b7ba5a1

File tree

5 files changed

+103
-34
lines changed

5 files changed

+103
-34
lines changed

.github/workflows/workflow.yaml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,49 @@ name: Deploy Infrastructure and Application
22

33
on:
44
push:
5-
branches: [ main ]
5+
branches: [main]
66
workflow_dispatch:
77

88
env:
99
IMAGE_NAME: demo-image
10-
RESOURCE_GROUP: BCSAI2024-DEVOPS-STUDENTS-B-DEV
10+
RESOURCE_GROUP: BCSAI2024-DEVOPS-STUDENTS-B-DEV
11+
ACR_NAME: demo-acr
1112

1213
jobs:
1314
deploy-infrastructure:
1415
runs-on: ubuntu-latest
1516
steps:
1617
- uses: actions/checkout@v3
17-
18+
1819
- name: Azure Login
1920
uses: azure/login@v1
2021
with:
2122
creds: ${{ secrets.AZURE_CREDENTIALS }}
22-
23+
2324
- name: Deploy Bicep
2425
uses: azure/arm-deploy@v1
26+
id: bicep
2527
with:
2628
subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
2729
resourceGroupName: ${{ env.RESOURCE_GROUP }}
2830
template: ./main.bicep
2931
parameters: ./main.parameters.json
30-
id: bicep
3132

3233
build-and-push:
3334
needs: deploy-infrastructure
3435
runs-on: ubuntu-latest
3536
steps:
3637
- uses: actions/checkout@v3
37-
38+
3839
- name: Azure Login
3940
uses: azure/login@v1
4041
with:
4142
creds: ${{ secrets.AZURE_CREDENTIALS }}
42-
43+
4344
- name: ACR Login
4445
run: |
4546
az acr login --name ${{ secrets.ACR_NAME }}
46-
47+
4748
- name: Build and Push
4849
run: |
4950
docker build -t ${{ secrets.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}:${{ github.sha }} ./backend
@@ -57,9 +58,10 @@ jobs:
5758
uses: azure/login@v1
5859
with:
5960
creds: ${{ secrets.AZURE_CREDENTIALS }}
60-
61+
6162
- name: Deploy to Azure Web App
6263
uses: azure/webapps-deploy@v2
6364
with:
6465
app-name: ${{ secrets.WEBAPP_NAME }}
65-
images: ${{ secrets.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}:${{ github.sha }}
66+
images: ${{ secrets.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}:${{ github.sha }}
67+

main.bicep

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,42 @@ param containerRegistryImageName string
1919
@description('The version/tag of the container image')
2020
param containerRegistryImageVersion string
2121

22+
// Add these parameters
23+
@description('The key vault name')
24+
param keyVaultName string
25+
26+
// Add Key Vault module
27+
module keyVault 'modules/key-vault.bicep' = {
28+
name: 'keyVaultDeployment'
29+
params: {
30+
name: keyVaultName
31+
location: location
32+
}
33+
}
34+
35+
// Reference the deployed Key Vault
36+
resource keyVaultReference 'Microsoft.KeyVault/vaults@2023-07-01' existing = {
37+
name: keyVaultName
38+
scope: resourceGroup()
39+
}
40+
41+
// Add Key Vault secrets for ACR credentials
42+
resource acrPasswordSecret 'Microsoft.KeyVault/vaults/secrets@2023-07-01' = {
43+
parent: keyVaultReference
44+
name: 'acrPassword'
45+
properties: {
46+
value: acr.outputs.adminPassword
47+
}
48+
}
49+
50+
resource acrUsernameSecret 'Microsoft.KeyVault/vaults/secrets@2023-07-01' = {
51+
parent: keyVaultReference
52+
name: 'acrUsername'
53+
properties: {
54+
value: acr.outputs.adminUsername
55+
}
56+
}
57+
2258
// ACR deployment
2359
module acr 'modules/acr.bicep' = {
2460
name: 'acrDeployment'
@@ -59,11 +95,12 @@ module webApp 'modules/web-app.bicep' = {
5995
linuxFxVersion: 'DOCKER|${acr.outputs.loginServer}/${containerRegistryImageName}:${containerRegistryImageVersion}'
6096
appCommandLine: ''
6197
}
98+
// In the web app module parameters
6299
appSettingsKeyValuePairs: {
63100
WEBSITES_ENABLE_APP_SERVICE_STORAGE: 'false'
64101
DOCKER_REGISTRY_SERVER_URL: 'https://${acr.outputs.loginServer}'
65-
DOCKER_REGISTRY_SERVER_USERNAME: acr.outputs.adminUsername
66-
DOCKER_REGISTRY_SERVER_PASSWORD: acr.outputs.adminPassword
102+
DOCKER_REGISTRY_SERVER_USERNAME: '@Microsoft.KeyVault(SecretUri=${keyVault.outputs.keyVaultUri}secrets/acrUsername)'
103+
DOCKER_REGISTRY_SERVER_PASSWORD: '@Microsoft.KeyVault(SecretUri=${keyVault.outputs.keyVaultUri}secrets/acrPassword)'
67104
}
68105
}
69106
dependsOn: [

main.parameters.json

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,28 @@
11
{
2-
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
3-
"contentVersion": "1.0.0.0",
4-
"parameters": {
5-
"location": {
6-
"value": "westeurope"
7-
},
8-
"acrName": {
9-
"value": "demo-acr"
10-
},
11-
"appServicePlanName": {
12-
"value": "demo-service-plan"
13-
},
14-
"webAppName": {
15-
"value": "demo-web-app"
16-
},
17-
"containerRegistryImageName": {
18-
"value": "demo-image"
19-
},
20-
"containerRegistryImageVersion": {
21-
"value": "latest"
22-
}
2+
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
3+
"contentVersion": "1.0.0.0",
4+
"parameters": {
5+
"location": {
6+
"value": "westeurope"
7+
},
8+
"acrName": {
9+
"value": "demo-acr"
10+
},
11+
"appServicePlanName": {
12+
"value": "demo-service-plan"
13+
},
14+
"webAppName": {
15+
"value": "demo-web-app"
16+
},
17+
"containerRegistryImageName": {
18+
"value": "demo-image"
19+
},
20+
"containerRegistryImageVersion": {
21+
"value": "latest"
22+
},
23+
"keyVaultName": {
24+
"value": "demo-kv"
2325
}
24-
}
26+
}
27+
}
28+

modules/acr.bicep

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,7 @@ resource acr 'Microsoft.ContainerRegistry/registries@2023-07-01' = {
2121

2222
// Outputs needed by the web app
2323
output loginServer string = acr.properties.loginServer
24+
#disable-next-line outputs-should-not-contain-secrets
2425
output adminUsername string = acrAdminUserEnabled ? acr.listCredentials().username : ''
26+
#disable-next-line outputs-should-not-contain-secrets
2527
output adminPassword string = acrAdminUserEnabled ? acr.listCredentials().passwords[0].value : ''

modules/key-vault.bicep

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
@description('The name of the key vault')
2+
param name string
3+
4+
@description('The location of the key vault')
5+
param location string
6+
7+
resource keyVault 'Microsoft.KeyVault/vaults@2023-07-01' = {
8+
name: name
9+
location: location
10+
properties: {
11+
sku: {
12+
family: 'A'
13+
name: 'standard'
14+
}
15+
tenantId: subscription().tenantId
16+
accessPolicies: []
17+
enabledForDeployment: true
18+
enabledForTemplateDeployment: true
19+
enableRbacAuthorization: true
20+
}
21+
}
22+
23+
output keyVaultName string = keyVault.name
24+
output keyVaultUri string = keyVault.properties.vaultUri

0 commit comments

Comments
 (0)