Untuk membuat VM Windows di Google Cloud, Anda harus menggunakan image VM yang telah menginstal Windows atau Windows Server. Google Cloud menyediakan image publik untuk versi Windows Server yang umum digunakan, tetapi image ini hanya cocok untuk pemberian lisensi sesuai permintaan. Untuk menggunakan lisensi Windows Anda sendiri (BYOL), Anda harus mengimpor image yang ada, atau Anda harus mem-build image kustom.
Panduan ini menjelaskan cara membuat image kustom menggunakan alat dan proses yang sama dengan yang Google Cloud digunakan 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
-
Siapkan autentikasi jika Anda belum melakukannya.
Autentikasi memverifikasi identitas Anda untuk mengakses Google Cloud layanan dan API. Untuk menjalankan
kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke
Compute Engine dengan memilih salah satu opsi berikut:
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan Google Cloud konsol untuk mengakses Google Cloud layanan dan API, Anda tidak perlu menyiapkan autentikasi.
gcloud
-
Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initJika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu .
-
- Tetapkan region dan zona default.
Memahami proses build
Untuk menginstal Windows dari awal, pendekatan umum adalah melakukan booting komputer dari DVD atau file ISO 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 memerlukan langkah-langkah berikut:
- Membuat disk baru.
- Mengekstrak image Windows (
install.wimdari media penginstalan) ke disk. - Menambahkan driver yang diperlukan, mengonfigurasi Windows Setup agar berjalan tanpa pengawasan, dan membuat disk dapat di-boot.
- Melakukan booting dari disk baru untuk menjalankan Windows Setup.
- Menginstal software tambahan, termasuk agen OS Tamu.
- 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 ditulis 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 mem-build image Windows dari awal.
Alur kerja Daisy untuk mem-build 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-boot. Instance VM kedua (dengan awalan install) menjalankan Windows Setup dan melakukan semua langkah yang tersisa.
Menyiapkan project untuk mem-build image
Untuk mencegah alat Daisy mengganggu instance VM atau infrastruktur yang ada, buat project khusus untuk mem-build image:
- Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Compute Engine API, Cloud Build API, and Cloud Storage API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Compute Engine API, Cloud Build API, and Cloud Storage API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Langkah berikutnya berbeda-beda, bergantung pada apakah Anda menggunakan Windows atau Linux di komputer lokal:
Windows
- Di komputer lokal, buka jendela Windows PowerShell.
Lakukan inisialisasi variabel:
$PROJECT_ID = "
PROJECT_ID"dengan
PROJECT_IDadalah ID project dari Google Cloud project yang Anda buat di bagian sebelumnya.Lakukan inisialisasi variabel lain sehingga berisi nomor project:
$PROJECT_NUMBER = gcloud projects describe $PROJECT_ID --format=value`(projectNumber`)
Linux
- Di komputer lokal, buka jendela terminal.
Lakukan inisialisasi variabel:
PROJECT_ID=
PROJECT_IDdengan
PROJECT_IDadalah ID project dari Google Cloud project yang Anda buat di bagian sebelumnya.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 mem-build image.
Pada langkah-langkah berikut, ganti UNIQUE_SUFFIX dengan urutan singkat karakter acak untuk membuat nama bucket yang unik. Misalnya, gunakan
PROJECT_ID-media-a7g19. Menambahkan akhiran acak ke
nama bucket membantu mencegah
bucket squatting,
yaitu kerentanan yang memungkinkan penyerang mendapatkan kontrol atas proses build Anda
dengan mengklaim bucket terlebih dahulu dengan nama yang dapat diprediksi.
Di komputer lokal, download paket penginstalan yang diperlukan:
Buat bucket Cloud Storage baru untuk menyimpan file penginstalan:
gcloud storage buckets create gs://$PROJECT_ID-media-
UNIQUE_SUFFIX--project=$PROJECT_IDBerikan peran Storage Object Viewer ke Cloud Build agar dapat membaca file penginstalan:
gcloud storage buckets add-iam-policy-binding gs://$PROJECT_ID-media-
UNIQUE_SUFFIX--member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com --role=roles/storage.objectViewerUpload paket penginstalan PowerShell:
gcloud storage cp
POWERSHELL_PACKAGEgs://$PROJECT_ID-media-UNIQUE_SUFFIX/PowerShell.msidengan
POWERSHELL_PACKAGEadalah jalur ke paket penginstalan PowerShell.Upload paket penginstalan .NET Framework:
gcloud storage cp
DOTNET_PACKAGEgs://$PROJECT_ID-media-UNIQUE_SUFFIX/dotnet-sdk.exedengan
DOTNET_PACKAGEadalah jalur ke paket penginstalan NET Framework.Upload paket penginstalan gcloud CLI:
gcloud storage cp
CLOUDSDK_PACKAGEgs://$PROJECT_ID-media-UNIQUE_SUFFIX/GoogleCloudSDKInstaller.exedengan
CLOUDSDK_PACKAGEadalah jalur ke paket penginstalan gcloud CLI.Upload file ISO yang berisi media penginstalan Windows Anda:
gcloud storage cp
ISOgs://$PROJECT_ID-media-UNIQUE_SUFFIX/dengan
ISOadalah nama file ISO.Anda juga dapat mengupload paket update tambahan:
gcloud storage cp
UPDATE_DIR/*.msu gs://$PROJECT_ID-media-UNIQUE_SUFFIX/updates/dengan
UPDATE_DIRadalah direktori yang berisi paket update.
Sekarang Anda siap untuk mem-build image kustom.
Membangun image
Menjalankan alur kerja daisy untuk mem-build image kustom memerlukan waktu hingga empat jam.
Daripada menjalankan daisy secara lokal, Anda sekarang membuat konfigurasi Cloud Build sehingga dapat mengizinkan Cloud Build menjalankan alur kerja di latar belakang.
Di komputer lokal, clone repositori Git yang berisi alur kerja
daisyuntuk mem-build image Windows:git clone https://github.com/GoogleCloudPlatform/compute-image-tools.git
Beralih ke direktori
windows:cd compute-image-tools/daisy_workflows/image_build/windows/
Di direktori
windows, Anda akan menemukan pilihan file dengan akhiran.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.jsonWindows Server 2019 (64-bit) windows-server-2019-dc-uefi-byol.wf.jsonWindows Server Core 2019 (64-bit) windows-server-2019-dc-core-uefi-byol.wf.jsonWindows Server 2016 (64-bit) windows-server-2016-dc-uefi-byol.wf.jsonWindows Server Core 2016 (64-bit) windows-server-2016-dc-core-uefi-byol.wf.jsonWindows 11 21H2 (64-bit) windows-11-21h2-ent-x64-uefi.wf.jsonWindows 11 22H2 (64-bit) windows-11-22h2-ent-x64-uefi.wf.jsonWindows 11 23H2 (64-bit) windows-11-23h2-ent-x64-uefi.wf.jsonWindows 10 21H2 (64-bit) windows-10-21h2-ent-x64-uefi.wf.jsonWindows 10 22H2 (64-bit) windows-10-22h2-ent-x64-uefi.wf.jsonBuka 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 sesuai dengan media penginstalan Anda.Jika Anda tidak yakin dengan nama edisi yang benar, buka perintah PowerShell 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-NullGanti
ISOdengan jalur lokal ke image ISO.Di direktori
windows, buat file baru bernamacloudbuild.yamldan 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-UNIQUE_SUFFIX/updates/ - -var:pwsh=gs://$PROJECT_ID-media-UNIQUE_SUFFIX/PowerShell.msi - -var:dotnet48=gs://$PROJECT_ID-media-UNIQUE_SUFFIX/dotnet-sdk.exe - -var:cloudsdk=gs://$PROJECT_ID-media-UNIQUE_SUFFIX/GoogleCloudSDKInstaller.exe - -var:media=gs://$PROJECT_ID-media-UNIQUE_SUFFIX/ISO-WORKFLOWGanti:
ISO: nama file ISO di Cloud Storage.WORKFLOW: nama file alur kerja yang sesuai dengan versi Windows yang Anda gunakan.
Kirim build ke Cloud Build:
gcloud builds submit --project $PROJECT_ID --async
Build memerlukan waktu sekitar empat jam untuk diselesaikan. Anda dapat melacak status build di Google Cloud konsol di bagian Cloud Build > History.
Menggunakan image kustom
Setelah build selesai, Anda dapat menemukan image BYOL kustom di Google Cloud konsol di bagian Compute Engine > Images.
Untuk membantu membedakan beberapa versi dari image yang sama, proses build menyematkan stempel waktu ke dalam nama image, misalnya windows-server-2019-dc-v1613488342.
Selain itu, proses ini mengaitkan image dengan kelompok image kustom
image family,
misalnya windows-server-2019.
Untuk membuat instance VM yang menggunakan image BYOL kustom, Anda harus menyediakan instance VM di node penyewa 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
- Pelajari lebih lanjut tentang alat Daisy.
- Pelajari alur kerja Daisy untuk mem-build image lebih lanjut .
- Pelajari cara menggunakan lisensi yang ada ke Compute Engine.
- Baca tentang praktik terbaik untuk menggunakan kelompok image.