Bagikan melalui


Mereplikasi sumber daya menggunakan replikator langganan Azure Stack Hub

Anda dapat menggunakan skrip PowerShell replikator langganan Azure Stack Hub untuk menyalin sumber daya antara langganan Azure Stack Hub, di seluruh stempel Azure Stack Hub, atau antara Azure Stack Hub dan Azure. Skrip replikator membaca dan membangun kembali sumber daya Azure Resource Manager dari langganan Azure dan Azure Stack Hub yang berbeda. Artikel ini melihat cara kerja skrip, cara Anda dapat menggunakan skrip, dan memberikan referensi untuk operasi skrip.

Anda dapat menemukan skrip yang digunakan dalam artikel ini di repositori GitHub Azure Intelligent Edge Patterns. Skrip berada di folder replikator langganan.

Gambaran umum replikator langganan

Replikator langganan Azure dirancang untuk menjadi modular. Alat ini menggunakan prosesor inti yang mengatur replikasi sumber daya. Selain itu, alat ini mendukung prosesor yang dapat disesuaikan yang bertindak sebagai templat untuk menyalin berbagai jenis sumber daya.

Prosesor inti terdiri dari tiga skrip berikut:

  • resource_retriever.ps1

    • Menghasilkan folder untuk menyimpan file output.

    • Mengatur konteks ke langganan sumber.

    • Mengambil sumber daya dan meneruskannya ke resource_processor.ps1.

  • resource_processor.ps1

    • Memproses sumber daya yang diteruskan oleh resource_retriever.ps1.

    • Menentukan prosesor yang disesuaikan untuk digunakan dan melewati sumber daya.

  • post_process.ps1

    • Post memproses output yang dihasilkan oleh prosesor yang disesuaikan untuk mempersiapkannya untuk disebarkan dalam langganan target.

    • Menghasilkan kode penyebaran untuk menyebarkan sumber daya dalam langganan target.

Ketiga skrip mengontrol aliran informasi dengan cara standar untuk memungkinkan fleksibilitas yang lebih besar. Menambahkan dukungan untuk sumber daya tambahan, misalnya, tidak mengharuskan Anda untuk mengubah kode apa pun di prosesor inti.

Prosesor yang disesuaikan, yang disebutkan di atas, adalah file ps1 yang menentukan bagaimana jenis sumber daya tertentu harus diproses. Nama prosesor yang disesuaikan selalu diberi nama menggunakan data tipe dalam sumber daya. Misalnya, anggap $vm memegang objek mesin virtual, menjalankan $vm. Jenis akan menangguhkan Microsoft.Compute/virtualMachines. Itu berarti, prosesor untuk mesin virtual akan diberi nama virtualMachines_processor.ps1, namanya harus persis seperti yang muncul dalam metadata sumber daya karena begitulah prosesor inti menentukan prosesor yang disesuaikan untuk digunakan.

Prosesor yang disesuaikan menentukan cara sumber daya harus direplikasi dengan menentukan informasi apa yang penting dan mendikte bagaimana informasi itu harus ditarik keluar dari metadata sumber daya. Prosesor yang disesuaikan kemudian mengambil semua data yang diekstraksi dan menggunakannya untuk menghasilkan file parameter yang akan digunakan bersama dengan templat Azure Resource Manager untuk menyebarkan sumber daya dalam langganan target. File parameter ini disimpan dalam Parameter_Files setelah posting diproses oleh post_process.ps1.

Ada folder di dalam struktur file Replicator bernama Standardized_ARM_Templates. Bergantung pada lingkungan sumber, penyebaran akan menggunakan salah satu templat Azure Resource Manager standar ini, atau templat Azure Resource Manager yang disesuaikan harus dibuat. Dalam hal ini, prosesor yang disesuaikan harus memanggil generator templat Azure Resource Manager. Dalam contoh yang dimulai sebelumnya, nama generator templat Azure Resource Manager untuk mesin virtual akan diberi nama virtualMachines_ARM_Template_Generator.ps1. Generator templat Azure Resource Manager bertanggung jawab untuk membuat templat Azure Resource Manager yang disesuaikan berdasarkan informasi apa yang ada di metadata sumber daya. Misalnya, jika sumber daya mesin virtual memiliki metadata yang menentukan bahwa itu adalah anggota kumpulan ketersediaan, generator templat Azure Resource Manager akan membuat templat Azure Resource Manager dengan kode yang menentukan ID dari kumpulan ketersediaan bahwa mesin virtual menjadi bagiannya. Dengan begitu, ketika mesin virtual disebarkan ke langganan baru, secara otomatis akan ditambahkan ke ketersediaan yang ditetapkan saat penyebaran. Templat Azure Resource Manager yang disesuaikan ini disimpan di folder Custom_ARM_Templates yang terletak di dalam folder Standardized_ARM_Templates. post_processor.ps1 bertanggung jawab untuk menentukan apakah penyebaran seharusnya menggunakan templat Azure Resource Manager standar atau yang disesuaikan dan menghasilkan kode penyebaran yang sesuai.

Skrip post-process.ps1 bertanggung jawab untuk membersihkan file parameter dan membuat skrip yang akan digunakan pengguna untuk menyebarkan sumber daya baru. Selama fase pembersihan, skrip menggantikan semua referensi ke ID langganan sumber, ID penyewa, dan lokasi dengan nilai target yang sesuai. Kemudian menampilkan file parameter ke folder Parameter_Files. Kemudian menentukan apakah sumber daya yang diproses menggunakan templat Azure Resource Manager yang disesuaikan atau tidak dan menghasilkan kode penyebaran yang sesuai, yang menggunakan cmdlet New-AzResourceGroupDeployment. Kode penyebaran kemudian ditambahkan ke file bernama DeployResources.ps1 yang disimpan di folder Deployment_Files. Terakhir, skrip menentukan grup sumber daya tempat sumber daya tersebut berada dan memeriksa skrip DeployResourceGroups.ps1 untuk melihat apakah kode penyebaran untuk menyebarkan grup sumber daya itu sudah ada. Jika tidak, itu akan menambahkan kode ke skrip tersebut untuk menyebarkan grup sumber daya, jika iya, itu tidak melakukan apa-apa.

Pengambilan API Dinamis

Alat ini memiliki pengambilan API dinamis bawaan sehingga versi API penyedia sumber daya terbaru yang tersedia dalam langganan sumber digunakan untuk menyebarkan sumber daya dalam langganan target:

Pengambilan API Gambar

Pengambilan API gambar di resource_processor.ps1.

Namun, ada kemungkinan bahwa versi API penyedia sumber langganan target lebih tua dari langganan sumber dan tidak mendukung versi yang disediakan dari langganan sumber. Dalam hal ini, kesalahan akan dilemparkan saat penyebaran dijalankan. Untuk mengatasi hal ini, perbarui penyedia sumber dalam langganan target agar sesuai dengan langganan sumber.

Penyebaran paralel

Alat ini membutuhkan parameter bernama paralel. Parameter ini mengambil nilai boolean yang menentukan apakah sumber daya yang diambil harus digunakan secara paralel atau tidak. Jika nilai diatur ke true, maka setiap panggilan ke New-AzResourceGroupDeployment akan memiliki bendera -asJob dan blok kode untuk menunggu pekerjaan paralel yang selesai akan ditambahkan di antara set penyebaran sumber daya berdasarkan jenis sumber daya. Ini memastikan bahwa semua sumber daya dari satu jenis telah disebarkan sebelum menyebarkan jenis sumber daya berikutnya. Jika nilai parameter paralel diatur ke false, semua sumber daya akan disebarkan secara serial.

Menambahkan jenis sumber daya tambahan

Menambahkan jenis sumber daya baru itu mudah. Pengembang harus membuat prosesor yang disesuaikan dan templat Azure Resource Manager atau generator templat Azure Resource Manager. Setelah selesai, pengembang harus menambahkan jenis sumber daya ke ValidateSet untuk parameter $resourceType dan array $resourceTypes dalam resource_retriever.ps1. Saat menambahkan jenis sumber daya ke array $resourceTypes, maka harus ditambahkan dalam urutan yang benar. Urutan array menentukan urutan sumber daya yang akan disebarkan, jadi ingatlah tentang dependensi. Terakhir, jika prosesor yang disesuaikan menggunakan generator templat Azure Resource Manager, mereka harus menambahkan nama jenis sumber daya ke array $customTypes dalam post_process.ps1.

Jalankan replikator langganan Azure

Untuk menjalankan alat replikator langganan Azure (v3), Anda harus memulai resource_retriever.ps1, menyediakan semua parameter. Parameter resourceType, ada opsi untuk memilih Semua daripada satu jenis sumber daya. Jika Semua dipilih, resource_retriever.ps1 akan memproses semua sumber daya dalam urutan, sehingga ketika penyebaran dijalankan, sumber daya dependen disebarkan terlebih dahulu. Misalnya, VNets disebarkan sebelum mesin virtual karena mesin virtual memerlukan VNet untuk disebarkan dengan benar.

Ketika skrip selesai dijalankan, akan ada tiga folder baru, Deployment_Files, Parameter_Files, dan Custom_ARM_Templates.

Catatan

Sebelum menjalankan salah satu skrip yang dihasilkan, Anda harus mengatur lingkungan yang tepat dan masuk ke langganan target (di Azure Stack Hub baru untuk ex) dan mengatur direktori kerja ke folder Deployment_Files.

Deployment_Files akan menyimpan dua file DeployResourceGroups.ps1 dan DeployResources.ps1. Mengeksekusi DeployResourceGroups.ps1 akan menyebarkan grup sumber daya. Mengeksekusi DeployResources.ps1 akan menyebarkan semua sumber daya yang diproses. Jika alat dijalankan dengan Semua atau Microsoft.Compute/virtualMachines sebagai jenis sumber daya, DeployResources.ps1 akan meminta pengguna untuk memasukkan kata sandi admin mesin virtual yang akan digunakan untuk membuat semua mesin virtual.

Contoh

  1. Jalankan skrip.

    Jalankan skrip

    Catatan

    Jangan lupa untuk mengonfigurasi lingkungan sumber dan konteks langganan untuk instans PS.

  2. Tinjau folder yang baru dibuat:

    Meninjau folder

  3. Atur konteks ke langganan target, ubah folder menjadi Deployment_Files, sebarkan grup sumber daya (jalankan skrip DeployResourceGroups.ps1), kemudian mulai penyebaran sumber daya (jalankan skrip DeployResources.ps1).

    Mengonfigurasi dan memulai penyebaran

  4. Jalankan Get-Job untuk memeriksa status. Get-Job | Receive-Job akan mengembalikan hasilnya.

Bersihkan

Di dalam folder replicatorV3, ada file bernama cleanup_generated_items.ps1 - itu akan menghapus folder Deployment_Files, Parameter_Files, dan Custom_ARM_Templates beserta semua isinya.

Operasi replikator langganan

Replikator langganan Azure (v3) saat ini dapat mereplikasi jenis sumber daya berikut:

  • Microsoft.Compute/availabilitySets

  • Microsoft.Compute/virtualMachines

  • Microsoft.Network/loadBalancers

  • Microsoft.Network/networkSecurityGroups

  • Microsoft.Network/publicIPAddresses

  • Microsoft.Network/routeTables

  • Microsoft.Network/virtualNetworks

  • Microsoft.Network/virtualNetworkGateways

  • Microsoft.Storage/storageAccounts

Saat menjalankan alat dengan Semua sebagai jenis sumber daya, urutan berikut akan diikuti saat mereplikasi dan menyebarkan (di bawah ini, semua sumber daya memiliki konfigurasinya yang direplikasi, yaitu sku, penawaran, dll.):

  • Microsoft.Network/virtualNetworks

    • Mereplikasi: - Semua ruang alamat - Semua subnet
  • Microsoft.Network/virtualNetworkGateways

    • Mereplikasi: - Konfigurasi IP publik - Konfigurasi subnet - Jenis VPN - Tipe gateway
  • Microsoft.Network/routeTables

  • Microsoft.Network/networkSecurityGroups

    • Mereplikasi: - Semua aturan keamanan masuk dan keluar
  • Microsoft.Network/publicIPAddresses

  • Microsoft.Network/loadBalancers

    • Mereplikasi: - Alamat IP pribadi - Konfigurasi alamat IP publik - Konfigurasi subnet
  • Microsoft.Compute/availabilitySets

    • Mereplikasi: - Jumlah domain kesalahan - Jumlah domain pembaruan
  • Microsoft.Storage/storageAccounts

  • Microsoft.Compute/virtualMachines

    • Mereplikasi:
      - Disk data (tanpa data)
      - Ukuran mesin virtual
      - Sistem operasi
      - Konfigurasi akun penyimpanan diagnostik
      - Konfigurasi IP publik
      - Antarmuka Jaringan
      - Alamat IP privat antarmuka jaringan
      - Konfigurasi Kelompok Keamanan Jaringan
      - Konfigurasi set ketersediaan

Catatan

Hanya membuat disk terkelola untuk disk OS dan disk data. Saat ini, tidak ada dukungan untuk menggunakan akun penyimpanan

Batasan

Alat ini dapat mereplikasi sumber daya dari satu langganan ke langganan lainnya selama penyedia sumber langganan target mendukung semua sumber daya dan opsi yang sedang direplikasi dari langganan sumber.

Untuk memastikan replikasi yang berhasil, pastikan versi penyedia sumber daya langganan target cocok dengan langganan sumber.

Saat mereplikasi dari Azure komersial ke Azure komersial atau dari satu langganan dalam Azure Stack Hub ke langganan lain dalam Azure Stack Hub yang sama, akan ada masalah saat mereplikasi akun penyimpanan. Hal ini disebabkan oleh persyaratan penamaan akun penyimpanan, bahwa semua nama akun penyimpanan harus unik di semua Azure komersial atau di semua langganan di wilayah/instans Azure Stack Hub. Mereplikasi akun penyimpanan di berbagai instans Azure Stack Hub akan berhasil karena Stacks adalah wilayah/instans terpisah.

Langkah berikutnya

Perbedaan dan pertimbangan untuk jaringan Azure Stack Hub