כדי ליצור מכונה וירטואלית של Windows ב- Cloud de Confiance by S3NS, צריך להשתמש בקובץ אימג' של מכונה וירטואלית שמותקן בו מראש Windows או Windows Server. Cloud de Confiance מספק קובצי אימג' ציבוריים לגרסאות נפוצות של Windows Server, אבל קובצי האימג' האלה מתאימים רק לרישוי על פי דרישה. כדי להביא רישיון Windows משלכם (BYOL), אתם צריכים לייבא קובץ אימג' קיים או ליצור קובץ אימג' בהתאמה אישית.
במדריך הזה מוסבר איך ליצור תמונה בהתאמה אישית באמצעות אותם כלים ותהליכים שבהם Cloud de Confiance משתמשת כדי ליצור את התמונות הציבוריות.
כדי להשלים את המדריך הזה, אתם צריכים:
- קובץ ISO שמכיל את מדיום ההתקנה של Windows או Windows Server.
- אופציונלי: חבילת עדכונים אחת או יותר של Windows (בפורמט
.msu) להחלה על התמונה.
לפני שמתחילים
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Cloud de Confiance כדי לגשת לשירותים ולממשקי ה-API של Cloud de Confiance by S3NS , לא צריך להגדיר אימות.
gcloud
-
מתקינים את ה-CLI של Google Cloud ואז נכנסים ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud init
-
- הגדרת אזור ותחום כברירת מחדל
הסבר על תהליך ה-build
כדי להתקין את Windows מאפס, אחת הגישות הנפוצות היא אתחול של המחשב מקובץ DVD או ISO שמכיל את קובצי ההתקנה של Windows. בניגוד לכמה מנהלי מכונות וירטואליות מקומיים, ב-Compute Engine אי אפשר להפעיל מקובץ ISO.
לכן, כדי להתקין את Windows מאפס, צריך לפעול בדרך אחרת שכוללת את השלבים הבאים:
- יצירת דיסק חדש.
- חילוץ קובץ האימג' של Windows (
install.wimממדיה ההתקנה) לדיסק. - הוספת מנהלי התקנים נדרשים, הגדרת Windows Setup כך שיפעל ללא השגחה והפיכת הדיסק לניתן לאתחול.
- מבצעים אתחול מהדיסק החדש כדי להפעיל את תוכנית ההתקנה של Windows.
- התקנת תוכנה נוספת, כולל סוכן מערכת ההפעלה של האורח.
- יצירת תמונה מהדיסק.
במקום לבצע את השלבים האלה באופן ידני, במדריך הזה מוסבר איך להשתמש ב-Cloud Build, בכלי daisy ובתהליכי העבודה לדוגמה שזמינים ב-GitHub כדי להפוך את התהליך לאוטומטי.
daisy הוא כלי שורת פקודה בקוד פתוח שמאפשר להריץ תהליכי עבודה. תבניות של תהליכי עבודה נכתבות כקובצי JSON ומכילות רצף של שלבים. כל שלב כזה מתאר פעולה ב-Compute Engine – למשל, יצירת דיסק או כיבוי של מכונה וירטואלית. לכן, תהליכי עבודה של Daisy מתאימים לאוטומציה של השלבים הנדרשים ליצירת תמונת Windows מאפס.
תהליכי העבודה של Daisy ליצירת קובצי אימג' מותאמים אישית של Windows יוצרים שתי מכונות וירטואליות זמניות.
המכונה הווירטואלית הראשונה (עם הקידומת bootstrap) מבצעת את השלבים הנדרשים ליצירת דיסק אתחול. במכונה הווירטואלית השנייה (עם הקידומת install) פועלת תוכנית ההתקנה של Windows, והיא מבצעת את כל השלבים שנותרו.
הכנת הפרויקט ליצירת תמונות
כדי שכלי ה-Daisy לא יפריע למכונות הווירטואליות או לתשתית הקיימות, צרו פרויקט ייעודי ליצירת קובצי אימג':
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 Cloud de Confiance project.
Enable the Compute Engine API, Cloud Build API, and Cloud Storage API APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
השלבים הבאים משתנים בהתאם למערכת ההפעלה שבה אתם משתמשים במחשב המקומי, Windows או Linux:
Windows
- במחשב המקומי, פותחים חלון של Windows PowerShell.
מפעילים משתנה:
$PROJECT_ID = "
PROJECT_ID"כאשר
PROJECT_IDהוא מזהה הפרויקט של הפרויקט ב-Cloud de Confiance שיצרתם בקטע הקודם.מאתחלים משתנה נוסף כדי שיכיל את מספר הפרויקט:
$PROJECT_NUMBER = gcloud projects describe $PROJECT_ID --format=value`(projectNumber`)
Linux
- במחשב המקומי, פותחים חלון טרמינל.
מאתחלים משתנה:
PROJECT_ID=
PROJECT_IDכאשר
PROJECT_IDהוא מזהה הפרויקט של פרויקטCloud de Confiance שיצרתם בקטע הקודם.מאתחלים עוד משתנה כך שיכיל את מספר הפרויקט:
PROJECT_NUMBER=`gcloud projects describe $PROJECT_ID --format=value\(projectNumber\)`
העלאת קובצי התקנה
עכשיו אתם אוספים את כל קובצי ההתקנה שנדרשים בשביל קובץ האימג' בהתאמה אישית, ומעלים אותם לקטגוריה של Cloud Storage. אחסון הקבצים בקטגוריה של Cloud Storage מבטיח שdaisy יוכל לגשת לקבצים, וגם מכונות ה-VM הזמניות שdaisy משתמש בהן כדי ליצור את האימג'.
בשלבים הבאים, מחליפים את UNIQUE_SUFFIX ברצף קצר של תווים רנדומליים כדי ליצור שם ייחודי לקטגוריה. לדוגמה, אפשר להשתמש בפקודה
PROJECT_ID-media-a7g19. הוספת סיומת אקראית לשם הקטגוריה עוזרת למנוע השתלטות על קטגוריות – פגיעות שבה תוקף יכול להשיג שליטה על תהליך הבנייה שלכם על ידי תפיסת בעלות מראש על קטגוריה עם שם צפוי.
במחשב המקומי, מורידים את חבילות ההתקנה הנדרשות:
יוצרים קטגוריה של Cloud Storage כדי לאחסן את קובצי ההתקנה:
gcloud storage buckets create gs://$PROJECT_ID-media-
UNIQUE_SUFFIX--project=$PROJECT_IDמקצים ל-Cloud Build את התפקיד צפייה באובייקט אחסון כדי שהוא יוכל לקרוא את קובצי ההתקנה:
gcloud storage buckets add-iam-policy-binding gs://$PROJECT_ID-media-
UNIQUE_SUFFIX--member=serviceAccount:$PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com --role=roles/storage.objectViewerמעלים את חבילת ההתקנה של PowerShell:
gcloud storage cp
POWERSHELL_PACKAGEgs://$PROJECT_ID-media-UNIQUE_SUFFIX/PowerShell.msi
POWERSHELL_PACKAGEהוא הנתיב לחבילת ההתקנה של PowerShell.מעלים את חבילת ההתקנה של .NET Framework:
gcloud storage cp
DOTNET_PACKAGEgs://$PROJECT_ID-media-UNIQUE_SUFFIX/dotnet-sdk.exe
DOTNET_PACKAGEהוא הנתיב לחבילת ההתקנה של NET Framework.מעלים את חבילת ההתקנה של ה-CLI של gcloud:
gcloud storage cp
CLOUDSDK_PACKAGEgs://$PROJECT_ID-media-UNIQUE_SUFFIX/GoogleCloudSDKInstaller.exe
CLOUDSDK_PACKAGEהוא הנתיב לחבילת ההתקנה של ה-CLI של gcloud.מעלים את קובץ ה-ISO שמכיל את מדיה ההתקנה של Windows:
gcloud storage cp
ISOgs://$PROJECT_ID-media-UNIQUE_SUFFIX/כאשר
ISOהוא השם של קובץ ה-ISO.אופציונלי: מעלים חבילות עדכון נוספות:
gcloud storage cp
UPDATE_DIR/*.msu gs://$PROJECT_ID-media-UNIQUE_SUFFIX/updates/כאשר
UPDATE_DIRהיא הספרייה שמכילה את חבילות העדכון.
עכשיו אפשר ליצור את התמונה המותאמת אישית.
יצירת התמונה
ההרצה של תהליך העבודה daisy כדי ליצור קובץ אימג' בהתאמה אישית נמשכת עד ארבע שעות.
במקום להריץ את daisy באופן מקומי, עכשיו יוצרים תצורת build של Cloud Build כדי לאפשר ל-Cloud Build להריץ את תהליך העבודה ברקע.
במחשב המקומי, משכפלים את מאגר Git שמכיל את תהליכי העבודה
daisyליצירת תמונות של Windows:git clone https://github.com/GoogleCloudPlatform/compute-image-tools.git
עוברים לספרייה
windows:cd compute-image-tools/daisy_workflows/image_build/windows/
בספרייה
windows, מוצאים מבחר של קבצים עם הסיומת.wf.json. הקבצים האלה מכילים הגדרות של תהליכי עבודה ב-Daisy לגרסאות נפוצות של Windows:גרסת Windows קובץ של תהליך עבודה Windows Server Core 2022 (64 ביט) windows-server-2022-dc-core-uefi-byol.wf.jsonWindows Server 2019 (גרסת 64 ביט) windows-server-2019-dc-uefi-byol.wf.jsonWindows Server Core 2019 (64 ביט) windows-server-2019-dc-core-uefi-byol.wf.jsonWindows Server 2016 (64 ביט) windows-server-2016-dc-uefi-byol.wf.jsonWindows Server Core 2016 (64 ביט) windows-server-2016-dc-core-uefi-byol.wf.jsonWindows 11 21H2 (64-bit) windows-11-21h2-ent-x64-uefi.wf.jsonWindows 11 22H2 (64 ביט) windows-11-22h2-ent-x64-uefi.wf.jsonWindows 11 23H2 (גרסת 64 ביט) windows-11-23h2-ent-x64-uefi.wf.jsonWindows 10 21H2 (64 ביט) windows-10-21h2-ent-x64-uefi.wf.jsonWindows 10 22H2 (64 סיביות) windows-10-22h2-ent-x64-uefi.wf.jsonפותחים את קובץ תהליך העבודה שהכי דומה לגרסת Windows שרוצים להתקין. אם צריך, משנים את ההגדרות של מהדורת Windows (
edition) ומפתח הרישיון (product_key) בקובצי תהליך העבודה כך שיתאימו למדיה להתקנה.אם אתם לא בטוחים מה השם הנכון של המהדורה, פתחו חלון פקודה של PowerShell עם הרשאות ניהול והריצו את הפקודות הבאות כדי להציג את כל המהדורות שנתמכות על ידי מדיה ההתקנה:
$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מחליפים את הערך
ISOבנתיב המקומי לקובץ ה-ISO.בספרייה
windows, יוצרים קובץ חדש בשםcloudbuild.yamlומדביקים בו את הקוד הבא: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-WORKFLOWמחליפים את:
-
ISO: השם של קובץ ה-ISO ב-Cloud Storage. -
WORKFLOW: שם קובץ זרימת העבודה שמתאים לגרסת Windows שבה אתם משתמשים.
-
שולחים את ה-build ל-Cloud Build:
gcloud builds submit --project $PROJECT_ID --async
התהליך יימשך עד ארבע שעות. אפשר לעקוב אחרי הסטטוס של הבנייה במסוף Cloud de Confiance בקטע Cloud Build > History.
שימוש בתמונה מותאמת אישית
אחרי שה-build מסתיים, קובץ האימג' המותאם אישית של BYOL מופיע במסוףCloud de Confiance בקטע Compute Engine > Images.
כדי להבדיל בין כמה גרסאות של אותה תמונה, תהליך הבנייה מטמיע חותמת זמן בשם התמונה, למשל windows-server-2019-dc-v1613488342.
בנוסף, התהליך משייך את התמונה למשפחת תמונות בהתאמה אישית, לדוגמה windows-server-2019.
כדי ליצור מכונה וירטואלית שמשתמשת באימג' BYOL בהתאמה אישית, צריך להקצות את המכונה הווירטואלית בשרת לדייר יחיד (sole-tenant).
פתרון בעיות
אם אתם חושדים שתהליך הבנייה נכשל או לא מתקדם, תוכלו להשתמש בגישות הבאות כדי לאבחן את המצב:
- מוודאים שהעליתם את חבילות ההתקנה ואת קובץ ה-ISO הנכונים.
- מוודאים שבחרתם תהליך עבודה שמתאים לגרסת Windows של קובץ ה-ISO.
- בודקים את יומן ה-build ב-Cloud Build ומחפשים הודעות שגיאה.
- אם נראה שה-build נתקע, בודקים את הפלט של היציאה הטורית של מכונת ה-VM שנוצרה על ידי ה-build ומחפשים הודעות שגיאה.