Latihan - Sebarkan templat ARM sebagai bagian dari upaya CI/CD Anda dengan GitHub Actions

Selesai

Di sini Anda menyebarkan templat Azure Resource Manager (ARM) dari alur kerja GitHub Actions.

Penting

Anda melakukan latihan ini di luar lingkungan Microsoft Learn. Latihan ini mengharuskan Anda untuk memiliki langganan Azure Anda sendiri, dan Anda mungkin dikenakan biaya. Ini diperlukan karena Anda harus membuat perwakilan layanan, yang tidak didukung dalam langganan kotak pasir. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

Buat akun dan repositori GitHub Anda

Pertama, jika Anda tidak memiliki akun GitHub, buat akun sekarang di halaman pembuatan akun GitHub. (Ini gratis.)

Cuplikan layar yang memperlihatkan halaman pembuatan akun GitHub.

Setelah Anda memiliki akun, masuk dan buat repositori baru di mana Anda dapat menyimpan templat Anda sebagai bagian dari model infrastruktur sebagai kode (IaC). Untuk membuat repositori (umumnya dikenal sebagai repositori di industri), ikuti langkah-langkah berikut:

  1. Di sudut kanan atas halaman mana pun di situs GitHub, gunakan menu drop-down +, lalu pilih Repositori baru. Atau pilih tombol hijau Buat repositori, jika ada.

    Cuplikan layar yang memperlihatkan pilihan untuk membuat repositori GitHub.

  2. Masukkan nama pendek dan mudah diingat untuk repositori Anda. Misalnya, gunakan Deploy-ARM-Template. Secara opsional, tambahkan deskripsi repositori Anda. Misalnya, gunakan Menyebarkan templat ARM pertama saya dengan GitHub Actions.

  3. Pilih pengaturan visibilitas repositori. Repositori publik dapat diakses oleh semua orang di internet. Repositori pribadi hanya dapat diakses oleh Anda dan orang-orang yang secara eksplisit berbagi akses dengan Anda. (Bekerja dengan latihan ini.)

  4. Di bawah Inisialisasi repositori ini dengan:, pilih Tambahkan file README.

  5. Pilih Buat repositori.

    Cuplikan layar yang memperlihatkan pembuatan detail repositori baru.

Anda membuat repositori dan menginisialisasinya dengan file README. Saatnya untuk menerapkan templat dan file parameter templat ke repositori.

Catatan

File README adalah tempat yang tepat untuk menggambarkan proyek Anda secara lebih rinci, atau untuk menambahkan beberapa dokumentasi seperti cara menginstal atau menggunakan proyek Anda. Konten file README Anda secara otomatis muncul di halaman depan repositori Anda.

Terapkan file templat ARM ke repositori

  1. Di GitHub, buka halaman utama repositori.

  2. Di atas daftar file, di daftar drop-down Tambahkan file, pilih Buat file baru.

    Cuplikan layar yang memperlihatkan pilihan untuk menambahkan templat ke repositori.

  3. Di bidang nama file, masukkan nama dan ekstensi untuk templat. Dalam latihan kami, gunakan nama azuredeploy.json. Salin dan tempel templat berikut ke file GitHub baru Anda.

    {
        "$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. Tambahkan deskripsi di bagian Terapkan file baru dan pilih Terapkan file baru untuk menyimpannya ke repositori Anda.

    Cuplikan layar yang memperlihatkan penyimpanan templat baru ke repositori.

Mengonfigurasikan autentikasi antara GitHub Actions dan langganan Azure Anda

Untuk menyebarkan sumber daya apa pun ke Azure dengan menggunakan GitHub Actions, Anda perlu membuat perwakilan layanan Azure dan memberinya izin untuk membuat sumber daya yang ditentukan dalam templat Anda. Anda melakukan langkah tersebut di bagian Azure Cloud Shell di portal Azure setelah Anda masuk ke langganan Anda.

Membuat perwakilan layanan

Untuk perwakilan alur kerja GitHub Actions untuk menyebarkan sumber daya Azure, diperlukan kontributor bawaan yang tepat.

Skrip Azure CLI berikut ini memperlihatkan bagaimana Anda bisa menghasilkan perwakilan layanan Azure dengan izin kontributor dalam grup sumber daya Azure. Grup sumber daya ini adalah tempat alur kerja menyebarkan sumber daya yang ditentukan dalam templat ARM Anda.

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

Di portal, saat Anda masuk langganan, pilih ikon Cloud Shell untuk membuka shell di bagian bawah halaman.

Animasi yang memperlihatkan pembukaan Cloud Shell.

Di shell, gunakan kode sebelumnya untuk membuat perwakilan layanan. Anda mendapatkan hasil berikut. Salin bagian JSON dari hasil (konten dalam kotak merah di cuplikan layar berikut) karena Anda membutuhkannya saat mengonfigurasi rahasia di GitHub.

Cuplikan layar yang memperlihatkan hasil untuk membuat perwakilan layanan di Azure.

Salin output JSON dan simpan sebagai rahasia GitHub dalam repositori GitHub Anda dengan melakukan langkah-langkah berikut di GitHub: Dari repositori GitHub Anda, pilih tab Pengaturan. Dari menu sebelah kiri, pilih menu drop-down Rahasia, lalu pilih Codespace.

Masukkan nilai berikut lalu pilih Tambahkan rahasia:

  • Nama: Masukkan AZURE_CREDENTIALS.
  • Rahasia: Tempelkan output JSON yang Anda salin sebelumnya.

Cuplikan layar yang menunjukkan cara menambahkan info rahasia utama layanan baru ke rahasia GitHub.

Anda memerlukan informasi ini untuk menentukan autentikasi dalam alur kerja.

Membuat alur kerja

File alur kerja harus disimpan di folder .github/workflows di akar repositori Anda. Ekstensi file alur kerja dapat berupa .yml atau .yaml.

Anda dapat membuat file alur kerja lalu mendorong/mengunggah file ke repositori. Atau Anda dapat menggunakan prosedur berikut untuk membuatnya di antarmuka GitHub:

  1. Dari repositori GitHub Anda, pilih Tindakan dari menu atas, dan pilih Siapkan alur kerja sendiri.

    Cuplikan layar yang memperlihatkan pilihan untuk menyiapkan alur kerja.

  2. Ganti nama file alur kerja jika Anda lebih suka nama yang berbeda daripada main.yml. Misalnya, gunakan deployARMTemplate.yml.

  3. Mengganti konten file .yml dengan kode berikut.

    Catatan

    GitHub Marketplace memiliki beberapa tindakan khusus yang dapat Anda gunakan untuk menyebarkan templat ARM. Modul ini menggunakan penyedia marketplace yang disebut Menyebarkan Templat Azure Resource Manager (ARM).

    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
    

    File alur kerja memiliki tiga bagian.

    • name: Nama alur kerja.

    • on: Nama peristiwa GitHub yang memicu alur kerja. Alur kerja dipicu saat peristiwa pendorongan ada di cabang utama dan mengubah setidaknya satu file di cabang utama.

    • jobs: Alur kerja yang dijalankan terdiri dari satu atau beberapa pekerjaan. Hanya satu pekerjaan yang disebut deploy-virtual-network-template. Pekerjaan ini memiliki tiga langkah.

      1. Lihat kode sumber.
      2. Masuk ke Azure.
      3. Menyebarkan templat ARM.

    Penting

    Verifikasi bahwa nama rahasia dalam ekspresi creds: ${{ secrets.AZURE_CREDENTIALS }} cocok dengan nama rahasia yang Anda simpan ke pengaturan repositori Anda. Verifikasi juga bahwa nama templat ARM di Deploy ARM Template langkah template: $GITHUB_WORKSPACE/azuredeploy.json tersebut cocok dengan nama yang Anda simpan di repositori sebelumnya.

    Catatan

    Nama grup sumber daya seharusnya GitHubActionExercise-rg jika Anda menggunakan kode CLI Azure sebelumnya saat Anda mengonfigurasikan info masuk penyebaran. Nama grup sumber daya yang dihasilkan adalah nama proyek rg dengan tambahan.

  4. Pilih Mulai terapkan. Tambahkan komentar dan deskripsi jika diperlukan.

  5. Pastikan Terapkan langsung ke cabang utama dipilih, lalu pilih Terapkan file baru (atau Terapkan perubahan).

    Cuplikan layar yang menunjukkan penerapan alur kerja ke cabang utama.

    Setelah file alur kerja dibuat dan diterapkan ke cabang utama repositori, alur kerja akan dimulai secara otomatis karena pemicu dalam alur kerja Anda adalah penerapan/pendorongan ke cabang utama.

    on:
      push:
        branches:
          - main
    
  6. Buka repositori Anda dan periksa status alur kerja Anda.

    Cuplikan layar yang memperlihatkan status alur kerja.

Memeriksa penyebaran Anda

Saat alur kerja selesai, buka portal Microsoft Azure untuk memeriksa status penyebaran.

Di panel kiri, pilih Grup sumber daya>GitHubActionExercise-rg. Pada panel Penyebaran, verifikasi bahwa penyebaran Anda berhasil.

Cuplikan layar yang memperlihatkan status penyebaran.