Azure Naming Tool DevOps-al
Állandó kérdés az elnevezés, nincs ez másként az Azure-ban sem. Minden ügyfélnél felmerül ez a kérdés. Természetesen az Microsoft-nak nagyon szép leírása dokumentációja van erről, hogy szerinte hogyan is kellene elnevezni az egyes erőforrásokat. Ha már megvan a logika, akkor el lehet kezdeni összepakolni, de kézzel macera :). Az Azure Naming Tool külön kezdte meg az életét, de mára helyett kapott a CloudAdoptionFramework Microsoft Github repository-ban is, így érdemes lehet megvizsgálni ezt.
Kézzel telepítésről már szép leírás található itt, de Én nem szeretek semmit feltelepíteni a gépemre, többek között a Docker Desktop-ot sem, így inkább automatizáltam a létrehozást és betettem egy Azure DevOps pipeline-ba…
Előfeltételek
Környezet létrehozásához a következőkre van szükség:
- Service Principal (SP) Link
- Azure DevOps regisztráció
- Azure előfizetés amibe van pár $ és minimum contributor jogosultság
- Ingyenes DevOps esetén, ha még MSDN se áll rendelkezsére, lehet igényelni ingyenes Parallel job-ot Link
DevOps pipeline
“inlineScript” -ban található részt kézzel is lefuttathatjuk ha Ubuntu+git+AZ+docker.io található a gépen, de nekem így kényelmesebb volt ;)
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
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: AzureCLI@2
inputs:
azureSubscription: 'azureSubscriptionname'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
export storageAccountName="gudszent$RANDOM"
export resourceGroupName="AzNamingTool"
export location="westeurope"
export acrname="gudacr$RANDOM"
export shareName="aznamingtoolpersist"
export containername="azurenamingtool"
export appservicename="AppServiceLinuxDockerPlan"
export webappname="gudszentAzNamingTool$RANDOM"
##Create resourcegroup
az group create --name $resourceGroupName --location $location
##Create ACR
az acr create --name $acrname --resource-group $resourceGroupName --location $location --sku basic --admin-enabled true --query loginServer --output tsv
##Get ACR cred
export TOKEN=$(az acr login --name $acrname --expose-token --output tsv --query accessToken)
##Create Storage Account and fileshare
az storage account create \
--resource-group $resourceGroupName \
--name $storageAccountName \
--location $location \
--kind StorageV2 \
--sku Standard_LRS \
--output none
az storage share-rm create \
--resource-group $resourceGroupName \
--storage-account $storageAccountName \
--name $shareName \
--quota 1024 \
--enabled-protocols SMB \
--output none
##Get SA key
sakey=$(az storage account keys list -g $resourceGroupName -n $storageAccountName --query [0].value -o tsv)
##Git Clone
git clone https://github.com/microsoft/CloudAdoptionFramework
cd CloudAdoptionFramework/ready/AzNamingTool/
##Build container
docker build -t $containername .
##Logint to ACR
docker login ${acrname}.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password $TOKEN
docker tag $containername ${acrname}.azurecr.io/${containername}:v1
docker push ${acrname}.azurecr.io/${containername}:v1
##Create an App Service plan
az appservice plan create --name $appservicename --resource-group $resourceGroupName --location $location --is-linux --sku B1
##Create a webapp
az webapp create --name $webappname --plan $appservicename --resource-group $resourceGroupName --deployment-container-image-name ${acrname}.azurecr.io/${containername}:v1
##Set persist for webapp
az webapp config storage-account add -g $resourceGroupName -n $webappname \
--access-key $sakey \
--custom-id "settings" \
--storage-type AzureFiles \
--account-name $storageAccountName \
--share-name $shareName \
--mount-path /app/settings
Végül valami hasonlót kell majd látnunk
App Service címét pedig ha megnyitjuk, már ki is próbálhatjuk új szerzeményünket
Természetesen ez a környezet csak tesztelésre javasolt, éles környezet esetén kizárólag privát kapcsolatokkal telepíteném ;)