Memahami penyebaran end-to-end

Selesai

Alur adalah alat fleksibel yang dapat Anda konfigurasikan dengan berbagai cara agar sesuai dengan kebutuhan Anda. Di unit ini, Anda mempelajari cara menggunakan alur untuk menyebarkan seluruh solusi, termasuk mengonfigurasi infrastruktur Azure, dan cara melakukan operasi penyebaran lainnya.

Berapa banyak alur?

Dalam beberapa organisasi, tim yang mengelola lingkungan Azure berbeda dari tim yang mengembangkan kode yang berjalan di lingkungan. Dalam situasi ini, sering tergoda untuk membuat beberapa alur, masing-masing dimiliki oleh tim yang bertanggung jawab atas area khususnya. Misalnya, Anda dapat membuat satu alur untuk menyebarkan kode Bicep yang menyebarkan sumber daya Azure situs web, dan alur lain yang menyebarkan aplikasi situs web.

Meskipun pendekatan ini mungkin memberi Anda fleksibilitas dalam cara Anda mengelola alur, mungkin sulit untuk menjaga semuanya tetap sinkron. Misalnya, misalkan tim situs web Anda memerlukan pengaturan baru pada aplikasi Azure App Service untuk mengaktifkan fitur yang sedang dibuatnya. Alur penyebaran aplikasi tidak dapat berjalan hingga alur penyebaran infrastruktur berhasil diselesaikan. Selain itu, menjadi rumit untuk mengirim data, seperti nama-nama sumber daya Azure yang dibuat oleh alur infrastruktur Anda, di antara alur.

Sebaliknya, sering lebih baik untuk membuat satu alur yang menyebarkan semua yang diperlukan untuk solusi Anda, bahkan jika orang yang berbeda atau tim yang berbeda mengelola komponen. Anda dapat menggunakan alat seperti Git dan Azure DevOps untuk mengoordinasikan pekerjaan Anda. Saat fitur baru ditambahkan, Anda dapat menggunakan cabang untuk membuat perubahan yang diperlukan pada file Bicep Anda. Dan ketika perubahan siap untuk diintegrasikan dan dirilis, satu alur melakukan semua langkah yang diperlukan untuk membangun dan menyebarkan solusi. Satu alur mengurangi kemungkinan hal-hal tidak sinkron.

Tip

Saat Anda membangun kode untuk solusi, Anda mungkin perlu sering menyebarkannya sehingga Anda dapat menguji cara kerjanya. Anda mungkin menemukan bahwa menyebarkan infrastruktur bersama dengan kode aplikasi Anda membuat alur berjalan lambat dan menghambat kemajuan Anda.

Jika berada di posisi ini, Anda dapat mempertimbangkan untuk menonaktifkan penyebaran infrastruktur untuk lingkungan pengembangan Anda. Anda dapat menggunakan filter jalur, templat alur, dan kondisi untuk mencapai hal ini. Namun, Anda harus membiarkan urutan penyebaran penuh tetap utuh untuk lingkungan Anda yang lain.

Sarana kontrol dan data plane

Banyak sumber daya Azure menyediakan dua sarana yang berbeda untuk akses. Sarana kontrol menyebarkan dan mengonfigurasi sumber daya. Dataata plane memungkinkan Anda mengakses fungsi sumber daya.

Saat membuat dan menyebarkan file Bicep, Anda berinteraksi dengan sarana kontrol. In Azure, sarana kontrol adalah Azure Resource Manager. Anda menggunakan Resource Manager untuk menentukan konfigurasi masing-masing sumber daya Anda.

Tetapi alur Anda sering kali perlu melakukan lebih dari sekadar berinteraksi dengan sarana kontrol. Misalnya, Anda mungkin perlu melakukan tugas lain:

  • Mengunggah blob ke akun penyimpanan.
  • Memodifikasi skema database.
  • Melakukan panggilan API ke layanan pihak ketiga.
  • Memicu pembaruan model pembelajaran mesin.
  • Menyebarkan situs web ke aplikasi Azure App Service.
  • Menggunakan perangkat lunak ke mesin virtual.
  • Daftarkan entri Server Nama Domain (DNS) dengan penyedia pihak ketiga.

Saat Anda mempertimbangkan alur end-to-end, Anda biasanya perlu menyebarkan sumber daya Azure Anda, lalu melakukan serangkaian operasi terhadap bidang data sumber daya tersebut. Terkadang, operasi ini disebut last mile dari penyebaran, karena Anda melakukan sebagian besar penyebaran dengan menggunakan bidang kontrol, dan hanya sedikit konfigurasi yang tersisa.

Catatan

Beberapa sumber daya tidak memiliki pembagian yang jelas antara sarana kontrol dan data plane-nya. Ini termasuk Azure Data Factory dan Azure API Management. Kedua layanan mendukung penyebaran otomatis sepenuhnya dengan menggunakan Bicep, tetapi memerlukan pertimbangan khusus. Anda dapat menemukan tautan ke informasi selengkapnya di halaman Ringkasan di akhir modul.

Cara melakukan operasi data plane

Saat membuat alur penyebaran yang berinteraksi dengan data plane sumber daya, Anda dapat menggunakan salah satu dari tiga pendekatan umum:

  • Skrip penyebaran Resource Manager.
  • Skrip alur.
  • Tugas alur.

Skrip penyebaran Resource Manager ditentukan dalam file Bicep Anda. Mereka menjalankan skrip Bash atau PowerShell, dan dapat berinteraksi dengan cmdlet Azure CLI atau Azure PowerShell. Anda membuat identitas terkelola sehingga skrip penyebaran dapat mengautentikasi ke Azure, dan Azure secara otomatis menyediakan dan mengelola sumber daya lain yang diperlukan untuk menjalankan skrip penyebaran.

Skrip penyebaran baik ketika Anda perlu menjalankan skrip dasar dalam proses penyebaran Anda. Namun, skrip tidak mudah memberi Anda akses ke elemen lain dari alur Anda.

Anda juga dapat menjalankan logika Anda sendiri dari dalam alur penyebaran. Azure Pipelines menyediakan ekosistem tugas yang kaya untuk hal umum yang perlu Anda lakukan. Jika tidak dapat menemukan tugas yang memenuhi kebutuhan, Anda dapat menggunakan skrip untuk menjalankan kode Bash atau PowerShell Anda sendiri. Tugas alur dan skrip berjalan dari agen alur Anda. Anda sering kali perlu mengautentikasi tugas atau skrip ke bidang data layanan yang Anda gunakan, dan cara Anda mengautentikasi tergantung pada layanan.

Tugas dan skrip alur memberi Anda fleksibilitas dan kontrol. Mereka juga memungkinkan Anda untuk mengakses artefak alur, yang segera Anda pelajari. Dalam modul ini, kami berfokus pada skrip dan tugas alur. Kami menautkan ke informasi selengkapnya tentang skrip penyebaran Resource Manager di halaman Ringkasan di akhir modul.

Output

Alur biasanya membuat dan mengonfigurasi sumber daya Azure Anda dengan menyebarkan file Bicep. Bagian alur berikutnya kemudian berinteraksi dengan data plane sumber daya tersebut. Agar dapat berinteraksi dengan sumber daya, tugas dan langkah alur memerlukan informasi tentang sumber daya Azure yang Anda buat.

Misalnya, misalkan Anda memiliki file Bicep yang menyebarkan akun penyimpanan. Anda ingin alur menyebarkan akun penyimpanan dan kemudian mengunggah beberapa blob ke kontainer blob di akun penyimpanan. Tugas alur yang mengunggah blob perlu mengetahui nama akun penyimpanan untuk terhubung dan nama kontainer blob untuk mengunggah file.

Ini adalah praktik yang baik untuk membuat file Bicep memutuskan nama sumber daya Azure Anda. Ini mungkin menggunakan parameter, variabel, atau ekspresi untuk membuat nama untuk akun penyimpanan dan kontainer blob. File Bicep kemudian dapat mengekspos output yang menyediakan nama masing-masing sumber daya. Langkah selanjutnya dalam alur dapat membaca nilai output. Dengan begitu, definisi alur Anda tidak perlu membuat kode keras nama apa pun atau informasi lain yang mungkin berubah antar lingkungan. Selain itu, definisi tidak perlu didasarkan pada aturan yang ditentukan dalam file Bicep Anda.

Dengan Azure Pipelines, Anda dapat menyebarkan nilai output dengan menggunakan variabel alur. Anda dapat mengatur nilai variabel alur dalam skrip alur. Anda menggunakan output log yang diformat khusus yang cara menafsirkannya dipahami oleh Azure Pipelines, seperti yang ditunjukkan di sini:

stages:
- stage: Stage1
  jobs:
  - job: Job1
    steps:
      # Set the variable's value.
      - script: |
          echo "##vso[task.setvariable variable=myVariableName;isOutput=true]VariableValue"
        name: Step1

      # Read the variable's value.
      - script:
          echo $(myVariableName)

Saat Anda membuat variabel dalam satu pekerjaan, tetapi ingin mengaksesnya di pekerjaan lain dalam tahap yang sama, Anda perlu memetakannya .

stages:
- stage: Stage2
  jobs:
  - job: Job2
    steps:
      # Set the variable's value.
      - script: |
          echo "##vso[task.setvariable variable=myVariableName;isOutput=true]VariableValue"
        name: Step1

  - job: Job3
    dependsOn: Job2
    variables: # Map the variable to this job.
      myVariableName: $[ dependencies.Job2.outputs['Step1.myVariableName'] ]
    steps:
      # Read the variable's value.
      - script: |
          echo $(myVariableName)

Untuk mengakses variabel di seluruh tahap alur, Anda juga perlu memetakan variabel, tetapi Anda menggunakan sintaks yang berbeda:

stages:
- stage: Stage2
  jobs:
  - job: Job2
    steps:
      # Set the variable's value.
      - script: |
          echo "##vso[task.setvariable variable=myVariableName;isOutput=true]VariableValue"
        name: Step1

  - job: Job3
    dependsOn: Job2
    variables: # Map the variable to this job.
      myVariableName: $[ dependencies.Job2.outputs['Step1.myVariableName'] ]
    steps:
      # Read the variable's value.
      - script: |
          echo $(myVariableName)

- stage: Stage3
  dependsOn: Stage2
  jobs:
  - job: Job4
    variables: # Map the variable to this stage.
      myVariableName: $[ stageDependencies.Stage2.Job2.outputs['Step1.myVariableName'] ]
    steps:
      # Read the variable's value.
    - script: |
        echo $(myVariableName)

Dengan menggunakan output Bicep dan variabel alur, Anda dapat membuat alur multitahap yang menyebarkan kode Bicep Anda dan kemudian melakukan berbagai tindakan pada sumber daya sebagai bagian dari penyebaran Anda.