Penyediaan infrastruktur dengan slot penyebaran Azure menggunakan Terraform

Terraform memungkinkan definisi, pratinjau, dan penyebaran infrastruktur cloud. Menggunakan Terraform, Anda membuat file konfigurasi menggunakan sintaksis HCL. Sintaksis HCL memungkinkan Anda untuk menentukan penyedia cloud - seperti Azure - dan elemen yang membentuk infrastruktur cloud Anda. Setelah membuat file konfigurasi, Anda membuat rencana eksekusi yang memungkinkan Anda untuk melihat pratinjau perubahan infrastruktur Anda sebelum disebarkan. Setelah memverifikasi perubahan, Anda menerapkan rencana eksekusi untuk menyebarkan infrastruktur. Untuk informasi selengkapnya tentang menggunakan Terraform di Azure, lihat pusat pengembang Azure Terraform

Anda dapat menggunakan slot penyebaran Azure untuk bertukar antara berbagai versi dari aplikasi Anda. Kemampuan itu membantu Anda meminimalkan dampak penyebaran yang rusak.

Artikel ini mengilustrasikan contoh penggunaan slot penyebaran dengan memandu Anda melalui penyebaran dua aplikasi melalui GitHub dan Azure. Satu aplikasi dihosting di slot produksi. Aplikasi kedua dihosting dalam slot pementasan. (Nama "produksi" dan "penahapan" bersifat arbitrer. Mereka bisa menjadi apa pun yang sesuai untuk skenario Anda.) Setelah mengonfigurasi slot penyebaran, Anda menggunakan Terraform untuk bertukar antara dua slot sesuai kebutuhan.

Dalam artikel ini, Anda akan mempelajari cara:

  • Membuat App Service
  • Membuat slot App Service
  • Menukar masuk dan keluar slot penyebaran contoh

1. Mengonfigurasi lingkungan Anda

  • Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.
  • akun GitHub: Anda memerlukan akun GitHub untuk mengambil dan menggunakan repositori GitHub uji.

2. Buat dan terapkan paket Terraform

  1. Telusuri ke portal Microsoft Azure.

  2. Buka Azure Cloud Shell. Jika Anda tidak memilih lingkungan sebelumnya, pilih Bash sebagai lingkungan Anda.

    Cloud Shell prompt

  3. Ubah direktori ke direktori clouddrive

    cd clouddrive
    
  4. Buat direktori bernama deploy.

    mkdir deploy
    
  5. Buat direktori bernama swap.

    mkdir swap
    
  6. Gunakan perintah bash ls untuk memverifikasi Anda telah berhasil membuat kedua direktori.

    Cloud shell after creating directories

  7. Ubah direktori ke direktori deploy

    cd deploy
    
  8. Pada Cloud Shell, buat file bernama deploy.tf.

    code deploy.tf
    
  9. Tempelkan kode berikut ke dalam editor:

    # Configure the Azure provider
    provider "azurerm" { 
        # The "feature" block is required for AzureRM provider 2.x. 
        # If you're using version 1.x, the "features" block is not allowed.
        version = "~>2.0"
        features {}
    }
    
    resource "azurerm_resource_group" "slotDemo" {
        name = "slotDemoResourceGroup"
        location = "westus2"
    }
    
    resource "azurerm_app_service_plan" "slotDemo" {
        name                = "slotAppServicePlan"
        location            = azurerm_resource_group.slotDemo.location
        resource_group_name = azurerm_resource_group.slotDemo.name
        sku {
            tier = "Standard"
            size = "S1"
        }
    }
    
    resource "azurerm_app_service" "slotDemo" {
        name                = "slotAppService"
        location            = azurerm_resource_group.slotDemo.location
        resource_group_name = azurerm_resource_group.slotDemo.name
        app_service_plan_id = azurerm_app_service_plan.slotDemo.id
    }
    
    resource "azurerm_app_service_slot" "slotDemo" {
        name                = "slotAppServiceSlotOne"
        location            = azurerm_resource_group.slotDemo.location
        resource_group_name = azurerm_resource_group.slotDemo.name
        app_service_plan_id = azurerm_app_service_plan.slotDemo.id
        app_service_name    = azurerm_app_service.slotDemo.name
    }
    
  10. Simpan file (<Ctrl>S), dan keluar dari editor (<Ctrl>Q).

  11. Sekarang setelah Anda membuat file, verifikasi isinya.

    cat deploy.tf
    
  12. Menginisialisasi Terraform.

    terraform init
    
  13. Buat rencana Terraform.

    terraform plan
    
  14. Provisikan sumber daya yang ditentukan pada konfigurasi file deploy.tf. (Konfirmasikan tindakan dengan memasukkan yes pada prompt.)

    terraform apply
    
  15. Tutup jendela Cloud Shell.

  16. Di menu utama portal Microsoft Azure, pilih Grup sumber daya.

  17. Pada tab Grup sumber daya, pilih slotDemoResourceGroup.

    Resource group created by Terraform

Anda sekarang melihat semua sumber daya yang dibuat Terraform.

Resources created by Terraform

3. Pisahkan proyek uji

Sebelum Anda dapat menguji pembuatan dan menukar masuk dan keluar slot penyebaran, Anda perlu memisahkan proyek pengujian dari GitHub.

  1. Telusuri repositori terraform-yang mengagumkan di GitHub.

  2. Pisahkan repositori terraform yang mengagumkan.

    Fork the GitHub awesome-terraform repo

  3. Ikuti petunjuk apa pun untuk memindahkan ke lingkungan Anda.

4. Sebarkan dari GitHub ke slot penyebaran Anda

Setelah Anda memisahkan repositori proyek uji, konfigurasikan slot penyebaran melalui langkah-langkah berikut:

  1. Di menu utama portal Microsoft Azure, pilih Grup sumber daya.

  2. Pilih slotDemoResourceGroup.

  3. Pilih slotAppService.

  4. Pilih Opsi penyebaran.

    Deployment options for an App Service resource

  5. Pada tab Opsi penyebaran, pilih Memilih Sumber, lalu pilih GitHub.

    Select deployment source

  6. Setelah Azure membuat koneksi dan menampilkan semua opsi, pilih Otorisasi.

  7. Pada tab Otorisasi, pilih Otorisasi, dan berikan kredensial yang dibutuhkan Azure untuk mengakses akun GitHub Anda.

  8. Setelah Azure memvalidasi kredensial GitHub Anda, sebuah pesan muncul dan menyatakan bahwa proses otorisasi telah selesai. Pilih OK untuk menutup tab Otorisasi.

  9. Pilih Memilih organisasi Anda dan pilih organisasi Anda.

  10. Pilih Memilih proyek.

  11. Pada tab Memilih proyek, pilih proyek terraform-yang mengagumkan.

    Choose the awesome-terraform project

  12. Pilih Memilih cabang.

  13. Pada tab Memilih cabang, pilih master.

    Choose the branch

  14. Pada tab Opsi penyebaran, pilih OK.

Pada titik ini, Anda telah menyebarkan slot produksi. Untuk menyebarkan slot pementasan, lakukan langkah-langkah sebelumnya dengan modifikasi berikut:

  • Di langkah 3, pilih sumber daya slotAppServiceSlotOne.

  • Pada langkah 13, pilih cabang yang berfungsi.

    Choose the working branch

5. Uji penyebaran aplikasi

Di bagian sebelumnya, Anda menyiapkan dua slot - slotAppService dan slotAppServiceSlotOne - untuk disebarkan dari berbagai cabang di GitHub. Mari kita pratinjau aplikasi web untuk memvalidasi bahwa mereka telah berhasil disebarkan.

  1. Di menu utama portal Microsoft Azure, pilih Grup sumber daya.

  2. Pilih slotDemoResourceGroup.

  3. Pilih slotAppService atau slotAppServiceSlotOne.

  4. Di halaman gambaran umum, pilih URL.

    Select the URL on the overview tab to render the app

  5. Bergantung pada aplikasi yang dipilih, Anda akan melihat hasil berikut:

    • Aplikasi web slotAppService - Halaman biru dengan judul halaman Slot Demo App 1.
    • Aplikasi web slotAppServiceSlotOne - Halaman hijau dengan judul halaman Slot Demo App 2.

    Preview the apps to test that they were deployed correctly

6. Tukar dua slot penyebaran

Untuk menguji swapping dua slot penyebaran, lakukan langkah-langkah berikut:

  1. Beralih ke tab browser yang menjalankan slotAppService (aplikasi dengan halaman biru).

  2. Kembali ke portal Azure pada tab terpisah.

  3. Buka Cloud Shell.

  4. Ubah direktori ke direktori clouddrive/swap.

    cd clouddrive/swap
    
  5. Pada Cloud Shell, buat file bernama swap.tf.

    code swap.tf
    
  6. Tempelkan kode berikut ke dalam editor:

    # Configure the Azure provider
    provider "azurerm" { 
        # The "feature" block is required for AzureRM provider 2.x. 
        # If you're using version 1.x, the "features" block is not allowed.
        version = "~>2.0"
        features {}
    }
    
    # Swap the production slot and the staging slot
    resource "azurerm_app_service_active_slot" "slotDemoActiveSlot" {
        resource_group_name   = "slotDemoResourceGroup"
        app_service_name      = "slotAppService"
        app_service_slot_name = "slotappServiceSlotOne"
    }
    
  7. Simpan file (<Ctrl>S), dan keluar dari editor (<Ctrl>Q).

  8. Menginisialisasi Terraform.

    terraform init
    
  9. Buat rencana Terraform.

    terraform plan
    
  10. Provisikan sumber daya yang ditentukan pada konfigurasi file swap.tf. (Konfirmasikan tindakan dengan memasukkan yes pada prompt.)

    terraform apply
    
  11. Setelah Terraform menukar slot, kembali ke browser. Merefresh halaman.

Aplikasi web di slot pementasanslotAppServiceSlotOne Anda telah ditukar dengan slot produksi dan sekarang ditandai dengan warna hijau.

The deployment slots have been swapped

Untuk kembali ke versi produksi asli aplikasi, aplikasikan kembali paket Terraform yang Anda buat dari file konfigurasi swap.tf.

terraform apply

Setelah aplikasi ditukar, Anda akan melihat konfigurasi aslinya.

Memecahkan masalah Terraform pada Azure

Memecahkan masalah umum saat menggunakan Terraform di Azure

Langkah berikutnya