Latihan - Sebarkan templat ARM sebagai bagian dari upaya CI/CD Anda dengan GitHub Actions
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.)
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:
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.
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.
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.)
Di bawah Inisialisasi repositori ini dengan:, pilih Tambahkan file README.
Pilih Buat repositori.
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
Di GitHub, buka halaman utama repositori.
Di atas daftar file, di daftar drop-down Tambahkan file, pilih Buat file baru.
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" } } ] } } ] }
Tambahkan deskripsi di bagian Terapkan file baru dan pilih Terapkan file baru untuk menyimpannya ke repositori Anda.
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.
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.
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.
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:
Dari repositori GitHub Anda, pilih Tindakan dari menu atas, dan pilih Siapkan alur kerja sendiri.
Ganti nama file alur kerja jika Anda lebih suka nama yang berbeda daripada main.yml. Misalnya, gunakan deployARMTemplate.yml.
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 disebutdeploy-virtual-network-template
. Pekerjaan ini memiliki tiga langkah.- Lihat kode sumber.
- Masuk ke Azure.
- 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 diDeploy ARM Template
langkahtemplate: $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 proyekrg
dengan tambahan.Pilih Mulai terapkan. Tambahkan komentar dan deskripsi jika diperlukan.
Pastikan Terapkan langsung ke cabang utama dipilih, lalu pilih Terapkan file baru (atau Terapkan perubahan).
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
Buka repositori Anda dan periksa status alur kerja Anda.
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.