Post

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

img-description

App Service címét pedig ha megnyitjuk, már ki is próbálhatjuk új szerzeményünket

img-description

Természetesen ez a környezet csak tesztelésre javasolt, éles környezet esetén kizárólag privát kapcsolatokkal telepíteném ;)

This post is licensed under CC BY 4.0 by the author.