Alıştırma - GitHub Actions ile ARM şablonlarınızı CI/CD çalışmalarınızın bir parçası olarak dağıtma

Tamamlandı

Burada GitHub Actions iş akışından bir Azure Resource Manager (ARM) şablonu dağıtacaksınız.

Önemli

Bu alıştırmayı Microsoft Learn ortamının dışında gerçekleştirirsiniz. Bu alıştırma için kendi Azure aboneliğinizin olması gerekir ve sizden ücret alınabilir. Bunun nedeni, korumalı alan aboneliğinde desteklenmeyen bir hizmet sorumlusu oluşturmanız gerekmesidir. Mevcut bir Azure aboneliğiniz yoksa başlamadan önce ücretsiz hesap oluşturun.

GitHub hesabınızı ve deponuzu oluşturma

İlk olarak, GitHub hesabınız yoksa GitHub hesabı oluşturma sayfasında şimdi bir hesap oluşturun. (Ücretsizdir.)

GitHub hesap oluşturma sayfasının gösterildiği ekran görüntüsü.

Hesabınız olduktan sonra oturum açın ve şablonlarınızı kod olarak altyapı (IaC) modelinin bir parçası olarak tutabileceğiniz yeni bir depo oluşturun. Depoyu oluşturmak için (yaygın olarak sektörde depo olarak bilinir) şu adımları izleyin:

  1. GitHub sitesindeki herhangi bir sayfanın sağ üst köşesinde bulunan + açılan menüsünden New repository (Yeni depo) öğesini seçin. Alternatif olarak, varsa yeşil renkli Depo oluştur düğmesini seçin.

    GitHub deposu oluşturmaya yönelik seçeneklerin gösterildiği ekran görüntüsü.

  2. Deponuz için kısa ve unutmayacağınız bir ad girin. Örneğin, Deploy-ARM-Template kullanın. İsteğe bağlı olarak, deponuz için bir açıklama girin. Örnek: GitHub Actions ile ilk ARM şablonumu dağıtıyorum.

  3. Depo için bir görünürlük ayarı seçin. Genel depolara internet üzerindeki herkes erişim sağlayabilir. Özel depolara yalnızca siz ve açıkça erişim izni verdiğiniz kişiler erişebilir. (Bu alıştırmada her iki işlem de kullanılabilir.)

  4. Bu deposunu şununla başlat: altında BENIOKU dosyası ekle'yi seçin.

  5. Create repository (Depo oluştur) öğesine tıklayın.

    Yeni depo ayrıntılarının oluşturulmasını gösteren ekran görüntüsü.

Deponuzu oluşturdunuz ve bir BENİOKU dosyasıyla başlattınız. Artık depoya bir şablon ve şablon parametre dosyası gönderebilirsiniz.

Not

BENİOKU dosyasını projenizi ayrıntılı olarak anlatmak veya projenizi yüklemeye ya da kullanmaya yönelik belgeler eklemek için kullanabilirsiniz. BENİOKU dosyanızın içeri otomatik olarak deponuzun giriş sayfasında gösterilir.

Depoya ARM şablonu dosyası gönderme

  1. GitHub’da deponun ana sayfasına gidin.

  2. Dosya listesinin üstündeki Dosya ekle açılır listesinden Yeni dosya oluştur’u seçin.

    Depoya şablon ekleme seçeneklerinin gösterildiği ekran görüntüsü.

  3. Dosya adı alanına şablonun adını ve uzantısını girin. Alıştırmamızda azuredeploy.json adını kullanın. Aşağıdaki şablonu kopyalayıp yeni GitHub dosyanıza yapıştırın.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "VnetName": {
                "type": "string",
                "defaultValue": "VNet-001",
                "metadata": {
                    "description": "Virtual Network Name"
                }
            },
            "CostCenterIO": {
                "type": "string",
                "defaultValue": "12345",
                "metadata": {
                    "description": "Cost Center IO number for cross billing"
                }
            },
            "OwnerName": {
                "type": "string",
                "defaultValue": "John Smith",
                "metadata": {
                    "description": "Name of the stakeholder responsible for this resource"
                }
            }
        },
        "variables": {},
        "resources": [
            {
                "apiVersion": "2018-10-01",
                "type": "Microsoft.Network/virtualNetworks",
                "name": "[parameters('VnetName')]",
                "location": "[resourceGroup().location]",
                "tags": {
                    "CostCenter": "[parameters('CostCenterIO')]",
                    "Owner": "[parameters('OwnerName')]"
                },
                "properties": {
                    "addressSpace": {
                        "addressPrefixes": [
                            "10.0.0.0/16"
                        ]
                    },
                    "enableVmProtection": false,
                    "enableDdosProtection": false,
                    "subnets": [
                        {
                            "name": "subnet001",
                            "properties": {
                                "addressPrefix": "10.0.0.0/24"
                            }
                        },
                        {
                            "name": "subnet002",
                            "properties": {
                                "addressPrefix": "10.0.1.0/24"
                            }
                        }
                    ]
                }
            }
        ]
    }
    
  4. Commit new file (Yeni dosya gönder) bölümüne bir açıklama ekleyip Commit new file (Yeni dosya gönder) öğesini seçerek dosyayı deponuza kaydedin.

    Depoya yeni bir şablon kaydetmenin gösterildiği ekran görüntüsü.

GitHub Actions ile Azure aboneliğiniz arasındaki kimlik doğrulamasını yapılandırın

GitHub Actions ile Azure’a kaynak dağıtmak için bir Azure hizmet sorumlusu oluşturmanız ve şablonlarınızda tanımlanan kaynakları oluşturma izni vermeniz gerekir. Bu adımı, aboneliğinizde oturum açtıktan sonra Azure portalının Azure Cloud Shell bölümünde gerçekleştirirsiniz.

Hizmet sorumlusunu oluşturma

Azure kaynaklarını dağıtmaya yarayan GitHub Actions iş akışı sorumlusu için, doğru yerleşik katkıda bulunan gerekir.

Aşağıdaki Azure CLI betiği, Azure kaynak grubunda katkıda bulunan izinlerine sahip bir Azure hizmet sorumlusu oluşturma adımlarını göstermektedir. Bu kaynak grubu, iş akışının ARM şablonunuzda tanımlanan kaynakları dağıttığı yerdir.

projectName="GitHubActionExercise"
location="eastus"
resourceGroupName="${projectName}-rg"
appName="http://${projectName}"

# Create the resource group
az group create --name $resourceGroupName --location $location

# Store the resource group ID in a variable
scope=$(az group list --query "[?contains(name, '$resourceGroupName')].id" -o tsv)

# Create the service principal with contributor rights to the resource group we just created
az ad sp create-for-rbac --name $appName --role Contributor --scopes $scope --sdk-auth

Portalda aboneliğinizde oturum açtığınızda, kabuğu açmak için sayfanın alt kısmındaki Cloud Shell’i seçin.

Cloud Shell’in açılmasını gösteren animasyon.

Yukarıdaki kodu kabuk ortamında kullanarak hizmet sorumlusunu oluşturun. Aşağıdaki sonuçları alırsınız. GitHub'da gizli diziyi yapılandırırken ihtiyacınız olduğundan sonuçların JSON bölümünü (aşağıdaki ekran görüntüsündeki kırmızı kutudaki içerik) kopyalayın.

Azure’da hizmet sorumlusu oluşturmaya yönelik sonuçların gösterildiği ekran görüntüsü.

GitHub'da aşağıdaki adımları uygulayarak JSON çıkışını kopyalayın ve GitHub deponuzda GitHub gizli dizisi olarak depolayın: GitHub deponuzdan Ayarlar sekmesini seçin. Sol menüden Gizli Diziler açılan listesini ve ardından Codespaces'ı seçin.

Aşağıdaki değerleri girin ve sonra Gizli dizi ekle’yi seçin:

  • Ad: AZURE_CREDENTIALS girin.
  • Gizli dizi: Daha önce kopyaladığınız JSON çıkışını yapıştırın.

GitHub gizli dizisine yeni hizmet sorumlusu gizli dizi bilgileri eklemeyi gösteren ekran görüntüsü.

İş akışında kimlik doğrulamasını belirtmek için bu bilgilere ihtiyacınız vardır.

İş akışı oluşturma

İş akışı dosyasının deponuzun .github/workflows klasöründe bulunması gerekir. İş akışı dosyası .yml veya .yaml uzantısına sahip olabilir.

İş akışı dosyası oluşturabilir ve sonra dosyayı depoya gönderebilir veya yükleyebilirsiniz. Alternatif olarak, GitHub arabiriminde oluşturmak için aşağıdaki yordamı kullanabilirsiniz:

  1. GitHub deponuzda üst taraftaki menüden Actions öğesini ve ardından Set up a workflow yourself (Kendiniz bir iş akışı ayarlayın) öğesini seçin.

    İş akışı ayarlamaya yönelik seçeneklerin gösterildiği ekran görüntüsü.

  2. main.yml yerine farklı bir ad kullanmak istiyorsanız iş akışı dosyasını yeniden adlandırabilirsiniz. Örneğin: deployARMTemplate.yml.

  3. yml dosyasının içeriğini aşağıdakiler kodla değiştirin.

    Not

    GitHub Marketplace sayfasında ARM şablonu dağıtmak için kullanabileceğiniz özel eylemler vardır. Bu modülde Azure Resource Manager (ARM) Şablonunu Dağıtma adlı market sağlayıcısı kullanılır.

    name: Deploy ARM Template
    
    on:
      push:
        branches:
          - main
    env:
      AZURE_SUBSCRIPTION_ID: << Subscription Id >>   # set this to your Azure Subscription Id
      AZURE_RESOURCE_GROUP: GitHubActionExercise-rg   # set this to your target resource group
    
    jobs:
      deploy-virtual-network-template:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout source code
            uses: actions/checkout@main
    
          - name: Login to Azure
            uses: azure/login@v1
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
    
          - name: Deploy ARM Template
            uses: azure/arm-deploy@v1
            with:
              scope: resourcegroup
              subscriptionId: ${{ env.AZURE_SUBSCRIPTION_ID }}
              resourceGroupName: ${{ env.AZURE_RESOURCE_GROUP }}
              template: ./azuredeploy.json
    

    İş akışı dosyasının üç bölümü vardır.

    • name: İş akışının adı.

    • on: İş akışını tetikleyen GitHub olayının adı. Bir gönderme olayı ana dalda olduğunda ve ana dalda en az bir dosyayı değiştirdiğinde iş akışı tetiklenir.

    • jobs: İş akışı çalıştırması bir veya daha fazla işten oluşur. Yalnızca bir iş deploy-virtual-network-template olarak adlandırılır. Bu işin üç adımı vardır.

      1. Kaynak kodunu kullanıma alma.
      2. Azure'da oturum açın.
      3. ARM şablonunu dağıtma.

    Önemli

    creds: ${{ secrets.AZURE_CREDENTIALS }} ifadesindeki gizli dizi adının, deponuzun ayarlarına kaydettiğiniz gizli dizinin adıyla eşleştiğini doğrulayın. Deploy ARM Template adımındaki ARM şablonu adının (template: $GITHUB_WORKSPACE/azuredeploy.json) daha önce depoya kaydettiğiniz şablonla eşleştiğini doğrulayın.

    Not

    Dağıtım kimlik bilgilerini yapılandırdığınızda, önceki Azure CLI kodunu kullandıysanız kaynak grubu adının GitHubActionExercise-rg olması gerekir. Oluşturulan kaynak grubu adı, proje adının rg eklenmiş halidir.

  4. Start commit (İşlemeye başla) öğesini seçin. Gerekirse bir yorum ve açıklama ekleyin.

  5. Doğrudan ana dala işle'nin seçili olduğundan emin olun ve ardından Yeni dosya işle (veya Değişiklikleri işle) seçeneğini belirleyin.

    Bir iş akışının ana dala işlenmesini gösteren ekran görüntüsü.

    İş akışı dosyası oluşturulduktan ve deponun ana dalına işlendikten sonra, iş akışınızdaki tetikleyici ana dala bir işleme/gönderme olduğundan iş akışı otomatik olarak başlatılır.

    on:
      push:
        branches:
          - main
    
  6. Deponuza gidin ve iş akışınızın durumunu denetleyin.

    İş akışı durumunun gösterildiği ekran görüntüsü.

Dağıtımınızı denetleme

İş akışı tamamlandıktan sonra dağıtım durumunu denetlemek için Azure portala gidin.

Soldaki bölmede Resource groups>GitHubActionExercise-rg seçeneğini belirleyin. Dağıtımlar bölmesinde, dağıtımınızın başarılı olduğunu doğrulayın.

Dağıtım durumunun gösterildiği ekran görüntüsü.