Alıştırma - GitHub Actions ile ARM şablonlarınızı CI/CD çalışmalarınızın bir parçası olarak dağıtma
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.)
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:
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.
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.
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.)
Bu deposunu şununla başlat: altında BENIOKU dosyası ekle'yi seçin.
Create repository (Depo oluştur) öğesine tıklayın.
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
GitHub’da deponun ana sayfasına gidin.
Dosya listesinin üstündeki Dosya ekle açılır listesinden Yeni dosya oluştur’u seçin.
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" } } ] } } ] }
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.
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.
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.
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.
İş 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:
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.
main.yml yerine farklı bir ad kullanmak istiyorsanız iş akışı dosyasını yeniden adlandırabilirsiniz. Örneğin: deployARMTemplate.yml.
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.- Kaynak kodunu kullanıma alma.
- Azure'da oturum açın.
- 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ınrg
eklenmiş halidir.Start commit (İşlemeye başla) öğesini seçin. Gerekirse bir yorum ve açıklama ekleyin.
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.
İş 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
Deponuza gidin ve iş akışınızın durumunu denetleyin.
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.