-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·133 lines (110 loc) · 4.17 KB
/
deploy.sh
File metadata and controls
executable file
·133 lines (110 loc) · 4.17 KB
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
#!/bin/bash
PREFIX='local'
SUFFIX='test'
LOCATION='westeurope'
RESOURCE_GROUP_NAME="${PREFIX}-rg"
APP_SERVICE_PLAN_NAME="${PREFIX}-app-service-plan-${SUFFIX}"
APP_SERVICE_PLAN_SKU="S1"
WEB_APP_NAME="${PREFIX}-webapp-nosql-${SUFFIX}"
COSMOSDB_ACCOUNT_NAME="${PREFIX}-nosqlapi-${SUFFIX}"
ZIPFILE="${WEB_APP_NAME}.zip"
RANDOM_SUFFIX=$(echo $RANDOM)
NEW_DB_NAME="vacationplanner_${RANDOM_SUFFIX}"
AZURECOSMOSDB_DATABASENAME=$NEW_DB_NAME
AZURECOSMOSDB_CONTAINERNAME="activities_${RANDOM_SUFFIX}"
AURECOSMOSDB_PARTITION_KEY="/partitionKey"
# Start azure CLI local mode session
az login
# Change the current directory to the script's directory
#cd "$CURRENT_DIR" || exit
# Validates if the resource group exists in the subscription, if not creates it
echo "Checking if resource group [$RESOURCE_GROUP_NAME] exists..."
az group show --name $RESOURCE_GROUP_NAME &>/dev/null
if [[ $? != 0 ]]; then
echo "No resource group [$RESOURCE_GROUP_NAME] exists"
echo "Creating resource group [$RESOURCE_GROUP_NAME]..."
# Create the resource group
az group create \
--name $RESOURCE_GROUP_NAME \
--location $LOCATION \
--only-show-errors 1> /dev/null \
if [[ $? == 0 ]]; then
echo "Resource group [$RESOURCE_GROUP_NAME] successfully created."
else
echo "Failed to create resource group [$RESOURCE_GROUP_NAME]."
exit
fi
else
echo "Resource group [$RESOURCE_GROUP_NAME] already exists."
fi
echo "Create CosmosDB NoSQL Account"
export AZURECOSMOSDB_ENDPOINT=$(az cosmosdb create \
--resource-group $RESOURCE_GROUP_NAME \
--name $WEB_APP_NAME \
--locations regionName=$LOCATION \
--query "documentEndpoint" \
--output tsv)
echo "Account created"
echo "AZURECOSMOSDB_ENDPOINT set to $AZURECOSMOSDB_ENDPOINT"
echo "Create CosmosDB NoSQL Database"
az cosmosdb sql database create \
--resource-group $RESOURCE_GROUP_NAME \
--name $AZURECOSMOSDB_DATABASENAME \
--account-name $WEB_APP_NAME
echo "Create CosmosDB NoSQL Container"
az cosmosdb sql container create \
--resource-group $RESOURCE_GROUP_NAME \
--account-name $WEB_APP_NAME \
--database-name $AZURECOSMOSDB_DATABASENAME \
--name $AZURECOSMOSDB_CONTAINERNAME \
--partition-key-path $AURECOSMOSDB_PARTITION_KEY \
--throughput 400
echo "Fetching DB Account primary master key"
export AZURECOSMOSDB_PRIMARY_KEY=$(az cosmosdb keys list \
--resource-group $RESOURCE_GROUP_NAME \
--name $WEB_APP_NAME \
--query "primaryMasterKey" \
--output tsv)
echo "Primary master key is $AZURECOSMOSDB_PRIMARY_KEY"
echo "Creating App service"
az appservice plan create --name $WEB_APP_NAME --resource-group $RESOURCE_GROUP_NAME --sku B1 --is-linux
echo "App service created"
echo "Creating Web App"
az webapp create --name $WEB_APP_NAME --resource-group $RESOURCE_GROUP_NAME --plan $WEB_APP_NAME --runtime PYTHON:3.13
echo "Web App created"
echo "Configure appsettings environment variables"
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP_NAME \
--name $WEB_APP_NAME \
--settings AZURECOSMOSDB_ENDPOINT=$AZURECOSMOSDB_ENDPOINT \
AZURECOSMOSDB_DATABASENAME=$AZURECOSMOSDB_DATABASENAME \
AZURECOSMOSDB_CONTAINERNAME=$AZURECOSMOSDB_CONTAINERNAME \
AZURECOSMOSDB_PRIMARY_KEY=$AZURECOSMOSDB_PRIMARY_KEY
# Print the application settings of the web app
echo "Retrieving application settings for web app [$WEB_APP_NAME]..."
az webapp config appsettings list \
--resource-group $RESOURCE_GROUP_NAME \
--name $WEB_APP_NAME
# Change current directory to source folder
cd "../src" || exit
# Remove any existing zip package of the web app
if [ -f "$ZIPFILE" ]; then
rm "$ZIPFILE"
fi
# Create the zip package of the web app
echo "Creating zip package of the web app..."
zip -r "$ZIPFILE" app.py cosmosdb_client.py static templates requirements.txt
# Deploy the web app
echo "Deploying web app [$WEB_APP_NAME] with zip file [$ZIPFILE]..."
az webapp deploy \
--resource-group $RESOURCE_GROUP_NAME \
--name $WEB_APP_NAME \
--src-path ${ZIPFILE} \
--type zip \
--async true \
--debug \
--verbose 1>/dev/null
# Remove the zip package of the web app
if [ -f "$ZIPFILE" ]; then
rm "$ZIPFILE"
fi