Membuat image BYOL Windows kustom


Untuk membuat VM Windows di Google Cloud, Anda harus menggunakan image VM yang telah menginstal Windows atau Windows Server sebelumnya. Google Cloud menyediakan image publik untuk versi Windows Server yang umum digunakan, tetapi image ini hanya cocok untuk pemberian lisensi sesuai permintaan. Untuk membawa lisensi Windows Anda sendiri (BYOL), Anda harus mengimpor image yang ada, atau Anda harus membuat image kustom.

Panduan ini menjelaskan cara membuat image kustom menggunakan alat dan proses yang sama dengan yang digunakan Google Cloud untuk membuat image publik.

Untuk menyelesaikan panduan ini, Anda memerlukan:

  • File ISO yang berisi media penginstalan Windows atau Windows Server.
  • Opsional, satu atau beberapa paket update Windows (dalam format .msu) untuk diterapkan ke image.

Sebelum memulai

  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses yang digunakan untuk memverifikasi identitas Anda untuk mengakses Google Cloud layanan dan API. Untuk menjalankan kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.

Memahami proses build

Untuk menginstal Windows dari awal, pendekatan umum adalah mem-boot komputer dari file ISO atau DVD yang berisi file penginstalan Windows. Tidak seperti beberapa hypervisor lokal, Compute Engine tidak memungkinkan Anda melakukan booting dari file ISO.

Oleh karena itu, untuk menginstal Windows dari awal, Anda harus mengikuti pendekatan lain yang mencakup langkah-langkah berikut:

  1. Membuat disk baru.
  2. Mengekstrak image Windows (install.wim dari media penginstalan) ke disk.
  3. Menambahkan driver yang diperlukan, mengonfigurasi Penyiapan Windows agar berjalan tanpa pengawasan, dan membuat disk dapat di-boot.
  4. Melakukan booting dari disk baru untuk menjalankan Penyiapan Windows.
  5. Menginstal software tambahan termasuk agen OS Tamu.
  6. Membuat image dari disk.

Daripada melakukan langkah-langkah ini secara manual, panduan ini menjelaskan cara menggunakan Cloud Build, alat daisy, dan alur kerja referensi yang tersedia di GitHub untuk mengotomatiskan proses.

daisy adalah alat command line open source yang memungkinkan Anda menjalankan alur kerja. Alur kerja dibuat sebagai file JSON dan berisi urutan langkah. Setiap langkah tersebut menjelaskan operasi Compute Engine – misalnya, membuat disk, atau mematikan instance VM. Oleh karena itu, alur kerja Daisy cocok untuk mengotomatiskan langkah-langkah yang diperlukan untuk membangun image Windows dari awal.

Alur kerja daisy untuk membangun image Windows kustom membuat dua instance VM sementara. Instance VM pertama (dengan awalan bootstrap) melakukan langkah-langkah yang diperlukan untuk membuat disk yang dapat di-booting. Instance VM kedua (dengan awalan install) menjalankan Penyiapan Windows dan melakukan semua langkah yang tersisa.

Menyiapkan project untuk membangun image

Untuk mencegah alat daisy mengganggu instance VM atau infrastruktur yang ada, buat project khusus untuk membuat image:

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API, Cloud Build API, and Cloud Storage API APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API, Cloud Build API, and Cloud Storage API APIs.

    Enable the APIs

  8. Langkah berikutnya berbeda-beda, bergantung pada apakah Anda menggunakan Windows atau Linux di komputer lokal:

    Windows

    1. Di komputer lokal, buka jendela Windows PowerShell.
    2. Lakukan inisialisasi variabel:

      $PROJECT_ID = "PROJECT_ID"
      

      dengan PROJECT_ID adalah project ID dari Google Cloud project yang Anda buat di bagian sebelumnya.

    3. Lakukan inisialisasi variabel lain sehingga berisi nomor project:

      $PROJECT_NUMBER = gcloud projects describe $PROJECT_ID --format=value`(projectNumber`)
      

    Linux

    1. Di komputer lokal Anda, buka jendela terminal.
    2. Lakukan inisialisasi variabel:

      PROJECT_ID=PROJECT_ID
      

      dengan PROJECT_ID adalah project ID dari Google Cloud project yang Anda buat di bagian sebelumnya.

    3. Lakukan inisialisasi variabel lain sehingga berisi nomor project:

      PROJECT_NUMBER=`gcloud projects describe $PROJECT_ID --format=value\(projectNumber\)`
      

    Mengupload file penginstalan

    Sekarang Anda mengumpulkan semua file penginstalan yang diperlukan untuk image kustom dan menguploadnya ke bucket Cloud Storage. Dengan menyimpan file di bucket Cloud Storage, Anda memastikan bahwa file dapat diakses oleh daisy dan oleh instance VM sementara yang digunakan daisy untuk membuat image.

    1. Di komputer lokal Anda, download paket penginstalan yang diperlukan:

    2. Buat bucket Cloud Storage baru untuk menyimpan file penginstalan:

      gcloud storage buckets create gs://$PROJECT_ID-media --project=$PROJECT_ID
      
    3. Beri peran Storage Object Viewer ke Cloud Build agar Cloud Build dapat membaca file penginstalan:

      gcloud storage buckets add-iam-policy-binding gs://$PROJECT_ID-media --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com --role=roles/storage.objectViewer
      
    4. Upload paket penginstalan PowerShell:

      gcloud storage cp POWERSHELL_PACKAGE gs://$PROJECT_ID-media/PowerShell.msi
      

      dengan POWERSHELL_PACKAGE adalah jalur ke paket penginstalan PowerShell.

    5. Upload paket penginstalan .NET Framework:

      gcloud storage cp DOTNET_PACKAGE gs://$PROJECT_ID-media/dotnet-sdk.exe
      

      dengan DOTNET_PACKAGE adalah jalur ke paket penginstalan NET Framework.

    6. Upload paket penginstalan gcloud CLI:

      gcloud storage cp CLOUDSDK_PACKAGE gs://$PROJECT_ID-media/GoogleCloudSDKInstaller.exe
      

      dengan CLOUDSDK_PACKAGE adalah jalur ke paket penginstalan gcloud CLI.

    7. Upload file ISO yang berisi media penginstalan Windows Anda:

      gcloud storage cp ISO gs://$PROJECT_ID-media/
      

      dengan ISO adalah nama file ISO.

    8. Secara opsional, upload paket update tambahan:

      gcloud storage cp UPDATE_DIR/*.msu gs://$PROJECT_ID-media/updates/
      

      dengan UPDATE_DIR adalah direktori yang berisi paket update.

    Sekarang Anda siap membuat image kustom.

    Membangun image

    Menjalankan alur kerja daisy untuk membuat image kustom memerlukan waktu hingga empat jam. Daripada menjalankan daisy secara lokal, Anda kini membuat konfigurasi Cloud Build sehingga Anda dapat membiarkan Cloud Build menjalankan alur kerja di latar belakang.

    1. Di komputer lokal, buat clone repositori Git yang berisi alur kerja daisy untuk mem-build image Windows:

      git clone https://github.com/GoogleCloudPlatform/compute-image-tools.git
      
    2. Beralih ke direktori windows:

      cd compute-image-tools/daisy_workflows/image_build/windows/
      
    3. Di direktori windows, Anda akan menemukan pilihan file dengan sufiks .wf.json. File ini berisi definisi alur kerja Daisy untuk versi Windows yang umum digunakan:

      Versi Windows File alur kerja
      Windows Server Core 2022 (64-bit) windows-server-2022-dc-core-uefi-byol.wf.json
      Windows Server 2019 (64-bit) windows-server-2019-dc-uefi-byol.wf.json
      Windows Server Core 2019 (64-bit) windows-server-2019-dc-core-uefi-byol.wf.json
      Windows Server 2016 (64 bit) windows-server-2016-dc-uefi-byol.wf.json
      Windows Server Core 2016 (64-bit) windows-server-2016-dc-core-uefi-byol.wf.json
      Windows 11 21H2 (64-bit) windows-11-21h2-ent-x64-uefi.wf.json
      Windows 11 22H2 (64-bit) windows-11-22h2-ent-x64-uefi.wf.json
      Windows 11 23H2 (64-bit) windows-11-23h2-ent-x64-uefi.wf.json
      Windows 10 21H2 (64-bit) windows-10-21h2-ent-x64-uefi.wf.json
      Windows 10 22H2 (64-bit) windows-10-22h2-ent-x64-uefi.wf.json

      Buka file alur kerja yang paling sesuai dengan versi Windows yang ingin Anda instal. Jika perlu, ubah setelan edisi Windows (edition) dan kunci lisensi (product_key) dalam file alur kerja agar cocok dengan media penginstalan Anda.

      Jika Anda tidak yakin dengan nama edisi yang benar, buka perintah PowerShell dengan hak istimewa yang ditingkatkan dan jalankan perintah berikut untuk mencantumkan semua edisi yang didukung oleh media penginstalan Anda:

      $IsoFile = "ISO"
      
      $Mount = Mount-DiskImage -ImagePath (Resolve-Path $IsoFile)
      
      $DriveLetter = ($Mount | Get-Volume).DriveLetter
      Get-WindowsImage -ImagePath "$($DriveLetter):\sources\install.wim" | select ImageName
      
      Dismount-DiskImage -InputObject $Mount | Out-Null
      

      Ganti ISO dengan jalur lokal ke image ISO.

    4. Di direktori windows, buat file baru bernama cloudbuild.yaml, lalu tempelkan kode berikut:

      timeout: 14400s  # 4 hour timeout for entire build
      steps:
      - name: 'gcr.io/compute-image-tools/daisy'
        timeout: 14400s  # 4 hour timeout for build step
        waitFor: ['-']
        args:
          - -project=$PROJECT_ID
          - -zone=us-central1-a
          - -var:updates=gs://$PROJECT_ID-media/updates/
          - -var:pwsh=gs://$PROJECT_ID-media/PowerShell.msi
          - -var:dotnet48=gs://$PROJECT_ID-media/dotnet-sdk.exe
          - -var:cloudsdk=gs://$PROJECT_ID-media/GoogleCloudSDKInstaller.exe
          - -var:media=gs://$PROJECT_ID-media/ISO
          - WORKFLOW
      

      Ganti:

      • ISO: nama file ISO di Cloud Storage.
      • WORKFLOW: nama file alur kerja yang sesuai dengan versi Windows yang Anda gunakan.
    5. Kirim build ke Cloud Build:

      gcloud builds submit --project $PROJECT_ID --async
      

      Proses build memerlukan waktu hingga empat jam untuk diselesaikan. Anda dapat melacak status build di konsol Google Cloud di bagian Cloud Build > History.

      Histori Cloud Build

    Menggunakan gambar kustom

    Setelah build selesai, Anda dapat menemukan image BYOL kustom di konsolGoogle Cloud di bagian Compute Engine > Images.

    Untuk membantu membedakan beberapa versi gambar yang sama, proses build menyematkan stempel waktu ke dalam nama gambar, misalnya windows-server-2019-dc-v1613488342. Selain itu, proses ini mengaitkan image dengan kelompok image kustom, misalnya windows-server-2019.

    Untuk membuat instance VM yang menggunakan image BYOL kustom, Anda harus menyediakan instance VM di node tenant tunggal.

    Pemecahan masalah

    Jika Anda menduga bahwa proses build gagal atau tidak berjalan, gunakan pendekatan berikut untuk mendiagnosis situasinya:

    • Pastikan Anda telah mengupload paket penginstalan dan file ISO yang tepat.
    • Pastikan Anda memilih alur kerja yang cocok dengan versi Windows dari file ISO.
    • Tinjau log build di Cloud Build dan periksa apakah ada pesan error.
    • Jika build tampak macet, tinjau output port serial instance VM yang dibuat oleh build dan periksa pesan error.

    Langkah berikutnya