יצירת תמונות BYOL של Windows בהתאמה אישית

כדי ליצור מכונה וירטואלית של 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

    1. מתקינים את ה-CLI של Google Cloud ואז נכנסים ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init
  • הגדרת אזור ותחום כברירת מחדל

הסבר על תהליך ה-build

כדי להתקין את Windows מאפס, אחת הגישות הנפוצות היא אתחול של המחשב מקובץ DVD או ISO שמכיל את קובצי ההתקנה של Windows. בניגוד לכמה מנהלי מכונות וירטואליות מקומיים, ב-Compute Engine אי אפשר להפעיל מקובץ ISO.

לכן, כדי להתקין את Windows מאפס, צריך לפעול בדרך אחרת שכוללת את השלבים הבאים:

  1. יצירת דיסק חדש.
  2. חילוץ קובץ האימג' של Windows (install.wim ממדיה ההתקנה) לדיסק.
  3. הוספת מנהלי התקנים נדרשים, הגדרת Windows Setup כך שיפעל ללא השגחה והפיכת הדיסק לניתן לאתחול.
  4. מבצעים אתחול מהדיסק החדש כדי להפעיל את תוכנית ההתקנה של Windows.
  5. התקנת תוכנה נוספת, כולל סוכן מערכת ההפעלה של האורח.
  6. יצירת תמונה מהדיסק.

במקום לבצע את השלבים האלה באופן ידני, במדריך הזה מוסבר איך להשתמש ב-Cloud Build, בכלי daisy ובתהליכי העבודה לדוגמה שזמינים ב-GitHub כדי להפוך את התהליך לאוטומטי.

‫daisy הוא כלי שורת פקודה בקוד פתוח שמאפשר להריץ תהליכי עבודה. תבניות של תהליכי עבודה נכתבות כקובצי JSON ומכילות רצף של שלבים. כל שלב כזה מתאר פעולה ב-Compute Engine – למשל, יצירת דיסק או כיבוי של מכונה וירטואלית. לכן, תהליכי עבודה של Daisy מתאימים לאוטומציה של השלבים הנדרשים ליצירת תמונת Windows מאפס.

תהליכי העבודה של Daisy ליצירת קובצי אימג' מותאמים אישית של Windows יוצרים שתי מכונות וירטואליות זמניות. המכונה הווירטואלית הראשונה (עם הקידומת bootstrap) מבצעת את השלבים הנדרשים ליצירת דיסק אתחול. במכונה הווירטואלית השנייה (עם הקידומת install) פועלת תוכנית ההתקנה של Windows, והיא מבצעת את כל השלבים שנותרו.

הכנת הפרויקט ליצירת תמונות

כדי שכלי ה-Daisy לא יפריע למכונות הווירטואליות או לתשתית הקיימות, צרו פרויקט ייעודי ליצירת קובצי אימג':

  1. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. 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.enable permission. 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.

    Enable the APIs

השלבים הבאים משתנים בהתאם למערכת ההפעלה שבה אתם משתמשים במחשב המקומי, Windows או Linux:

Windows

  1. במחשב המקומי, פותחים חלון של Windows PowerShell.
  2. מפעילים משתנה:

    $PROJECT_ID = "PROJECT_ID"
    

    כאשר PROJECT_ID הוא מזהה הפרויקט של הפרויקט ב-Cloud de Confiance שיצרתם בקטע הקודם.

  3. מאתחלים משתנה נוסף כדי שיכיל את מספר הפרויקט:

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

Linux

  1. במחשב המקומי, פותחים חלון טרמינל.
  2. מאתחלים משתנה:

    PROJECT_ID=PROJECT_ID
    

    כאשר PROJECT_ID הוא מזהה הפרויקט של פרויקטCloud de Confiance שיצרתם בקטע הקודם.

  3. מאתחלים עוד משתנה כך שיכיל את מספר הפרויקט:

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

העלאת קובצי התקנה

עכשיו אתם אוספים את כל קובצי ההתקנה שנדרשים בשביל קובץ האימג' בהתאמה אישית, ומעלים אותם לקטגוריה של Cloud Storage. אחסון הקבצים בקטגוריה של Cloud Storage מבטיח שdaisy יוכל לגשת לקבצים, וגם מכונות ה-VM הזמניות שdaisy משתמש בהן כדי ליצור את האימג'.

בשלבים הבאים, מחליפים את UNIQUE_SUFFIX ברצף קצר של תווים רנדומליים כדי ליצור שם ייחודי לקטגוריה. לדוגמה, אפשר להשתמש בפקודה PROJECT_ID-media-a7g19. הוספת סיומת אקראית לשם הקטגוריה עוזרת למנוע השתלטות על קטגוריות – פגיעות שבה תוקף יכול להשיג שליטה על תהליך הבנייה שלכם על ידי תפיסת בעלות מראש על קטגוריה עם שם צפוי.

  1. במחשב המקומי, מורידים את חבילות ההתקנה הנדרשות:

  2. יוצרים קטגוריה של Cloud Storage כדי לאחסן את קובצי ההתקנה:

    gcloud storage buckets create gs://$PROJECT_ID-media-UNIQUE_SUFFIX --project=$PROJECT_ID
    
  3. מקצים ל-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
    
  4. מעלים את חבילת ההתקנה של PowerShell:

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

    ‫POWERSHELL_PACKAGE הוא הנתיב לחבילת ההתקנה של PowerShell.

  5. מעלים את חבילת ההתקנה של ‎ .NET Framework:

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

    ‫DOTNET_PACKAGE הוא הנתיב לחבילת ההתקנה של NET Framework.

  6. מעלים את חבילת ההתקנה של ה-CLI של gcloud:

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

    ‫CLOUDSDK_PACKAGE הוא הנתיב לחבילת ההתקנה של ה-CLI של gcloud.

  7. מעלים את קובץ ה-ISO שמכיל את מדיה ההתקנה של Windows:

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

    כאשר ISO הוא השם של קובץ ה-ISO.

  8. אופציונלי: מעלים חבילות עדכון נוספות:

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

    כאשר UPDATE_DIR היא הספרייה שמכילה את חבילות העדכון.

עכשיו אפשר ליצור את התמונה המותאמת אישית.

יצירת התמונה

ההרצה של תהליך העבודה daisy כדי ליצור קובץ אימג' בהתאמה אישית נמשכת עד ארבע שעות. במקום להריץ את daisy באופן מקומי, עכשיו יוצרים תצורת build של Cloud Build כדי לאפשר ל-Cloud Build להריץ את תהליך העבודה ברקע.

  1. במחשב המקומי, משכפלים את מאגר Git שמכיל את תהליכי העבודה daisy ליצירת תמונות של Windows:

    git clone https://github.com/GoogleCloudPlatform/compute-image-tools.git
    
  2. עוברים לספרייה windows:

    cd compute-image-tools/daisy_workflows/image_build/windows/
    
  3. בספרייה windows, מוצאים מבחר של קבצים עם הסיומת .wf.json. הקבצים האלה מכילים הגדרות של תהליכי עבודה ב-Daisy לגרסאות נפוצות של Windows:

    גרסת Windows קובץ של תהליך עבודה
    ‫Windows Server Core 2022 (64 ביט) windows-server-2022-dc-core-uefi-byol.wf.json
    ‫Windows Server 2019 (גרסת 64 ביט) windows-server-2019-dc-uefi-byol.wf.json
    ‫Windows Server Core 2019 (64 ביט) windows-server-2019-dc-core-uefi-byol.wf.json
    ‫Windows Server 2016 (64 ביט) windows-server-2016-dc-uefi-byol.wf.json
    ‫Windows Server Core 2016 (64 ביט) 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 ביט) windows-11-22h2-ent-x64-uefi.wf.json
    ‫Windows 11 23H2 (גרסת 64 ביט) windows-11-23h2-ent-x64-uefi.wf.json
    ‫Windows 10 21H2 (64 ביט) windows-10-21h2-ent-x64-uefi.wf.json
    ‫Windows 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.

  4. בספרייה 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 שבה אתם משתמשים.
  5. שולחים את ה-build ל-Cloud Build:

    gcloud builds submit --project $PROJECT_ID --async
    

    התהליך יימשך עד ארבע שעות. אפשר לעקוב אחרי הסטטוס של הבנייה במסוף Cloud de Confiance בקטע Cloud Build > History.

    היסטוריית Cloud Build

שימוש בתמונה מותאמת אישית

אחרי שה-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 ומחפשים הודעות שגיאה.

המאמרים הבאים