סקריפט לטעינה בזמן ההפעלה הוא קובץ שמבצע משימות במהלך תהליך ההפעלה של מכונה וירטואלית (VM). סקריפטים לטעינה בזמן ההפעלה יכולים לחול על כל המכונות הווירטואליות בפרויקט או על מכונה וירטואלית אחת. סקריפטים לטעינה בזמן ההפעלה שצוינו במטא-נתונים ברמת ה-VM מבטלים סקריפטים לטעינה בזמן ההפעלה שצוינו במטא-נתונים ברמת הפרויקט, וסקריפטים לטעינה בזמן ההפעלה פועלים רק כשיש רשת זמינה. במאמר הזה מוסבר איך להשתמש בסקריפטים להפעלה במכונות וירטואליות של Windows Server. מידע על הוספת סקריפט לטעינה בזמן ההפעלה ברמת הפרויקט זמין במאמר gcloud compute project-info add-metadata.
סקריפטים לטעינה בזמן ההפעלה ב-Windows צריכים להיות סקריפטים של Command shell (.cmd), PowerShell (.ps1) או קובץ אצווה (.bat), וצריכה להיות להם סיומת הקובץ המתאימה.
אם מציינים סקריפט לטעינה בזמן ההפעלה באמצעות אחת מהפרוצדורות שמתוארות במסמך הזה, מערכת Compute Engine מבצעת את הפעולות הבאות:
העתקת הסקריפט לטעינה בזמן ההפעלה אל ה-VM
מתזמן המשימות מריץ את הסקריפט לטעינה בזמן ההפעלה בתור החשבון
LocalSystemכשהמכונה הווירטואלית מופעלת.
מידע על המשימות השונות שקשורות לסקריפטים לטעינה בזמן ההפעלה ועל המקרים שבהם צריך לבצע כל אחת מהן מופיע במסמך הסקירה הכללית על סקריפטים לטעינה בזמן ההפעלה.
דרישות מוקדמות
כדי להריץ סקריפטים שמאוחסנים במטא-נתונים במכונת VM, צריך להתקין ולהפעיל את סביבת האורח.
- סביבת האורח כוללת את סוכן האורח (לדוגמה, google-guest-agent ב-Linux) שקורא את תוכן הסקריפט או את כתובת ה-URL ממטא-נתונים של המכונה ומפעיל את הביצוע.
- כל התמונות הציבוריות של Compute Engine מגיעות עם סביבת האורח שכבר מותקנת.
- אם יוצרים אימג' מותאם אישית, צריך להתקין ידנית את סביבת האורח של Google כדי לוודא שהסקריפטים ממטא-נתונים וממאפיינים אחרים של Google Cloud פועלים בצורה תקינה.
לפני שמתחילים
- קוראים את הסקירה הכללית על סקריפטים לטעינה בזמן ההפעלה.
- העקרונות הבסיסיים של מטא-נתונים של מכונות וירטואליות
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים Google Cloud ולממשקי ה-API, לא צריך להגדיר אימות.
gcloud
-
התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
- הגדרת אזור ותחום כברירת מחדל.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
מפתחות מטא-נתונים לסקריפטים לטעינה בזמן ההפעלה של Windows
סקריפט לטעינה בזמן ההפעלה מועבר למכונה וירטואלית ממיקום שמוגדר על ידי מפתח מטא-נתונים. מפתח מטא-נתונים מציין אם הסקריפט לטעינה בזמן ההפעלה מאוחסן באופן מקומי, מאוחסן ב-Cloud Storage או מועבר ישירות למכונה הווירטואלית. יכול להיות שמפתח המטא-נתונים שבו משתמשים תלוי גם בגודל או בסוג הקובץ של סקריפט לטעינה בזמן ההפעלה.
בטבלה הבאה מפורטים מפתחות המטא-נתונים שאפשר להשתמש בהם בסקריפטים להפעלה ב-Windows, ומוסבר באיזה מפתח להשתמש בהתאם למיקום האחסון, לגודל ולסוג הקובץ של הסקריפט להפעלה.
| מפתח מטא-נתונים | שימוש ב |
|---|---|
sysprep-specialize-script-ps1 |
העברה של סקריפט PowerShell לא חתום שמאוחסן באופן מקומי או שנוסף ישירות, בגודל של עד 256KB |
sysprep-specialize-script-cmd |
העברת סקריפט מעטפת שמאוחסן באופן מקומי או שנוסף ישירות ובגודל של עד 256KB |
sysprep-specialize-script-bat |
העברת סקריפט של קובץ אצווה שמאוחסן באופן מקומי או שנוסף ישירות, בגודל של עד 256KB |
sysprep-specialize-script-url |
העברת קובץ אצווה, מעטפת פקודה, סקריפט PowerShell חתום או לא חתום או קובץ הפעלה שמאוחסן ב-Cloud Storage וגדול מ-256KB |
windows-startup-script-ps1 |
העברה של סקריפט PowerShell לא חתום שמאוחסן באופן מקומי או שנוסף ישירות, בגודל של עד 256KB |
windows-startup-script-cmd |
העברת סקריפט מעטפת שמאוחסן באופן מקומי או שנוסף ישירות, ושהגודל שלו הוא עד 256KB |
windows-startup-script-bat |
העברת סקריפט של קובץ אצווה שמאוחסן באופן מקומי או שנוסף ישירות, וגודלו עד 256KB |
windows-startup-script-url |
העברת קובץ אצווה, מעטפת פקודה, סקריפט PowerShell חתום או לא חתום או קובץ הפעלה שמאוחסן ב-Cloud Storage וגדול מ-256KB |
מידע נוסף על סדר ההרצה של הסוגים השונים של סקריפטים לטעינה בזמן ההפעלה מופיע במאגר GoogleCloudPlatform/compute-image-windows ב-GitHub.
סדר ההרצה של סקריפטים לטעינה בזמן ההפעלה של Windows
אפשר להשתמש בכמה סקריפטים לטעינה בזמן ההפעלה. סקריפטים לטעינה בזמן ההפעלה שמאוחסנים באופן מקומי או שנוספו ישירות מופעלים לפני סקריפטים לטעינה בזמן ההפעלה שמאוחסנים ב-Cloud Storage. סוג הקובץ שמכיל את הסקריפט משפיע גם על סדר הביצוע. בטבלה הבאה מוצג, על סמך מפתח המטא-נתונים, סדר ההרצה של סקריפטים לטעינה בזמן ההפעלה של Windows.
| מפתח המטא-נתונים | סדר ההפעלה |
|---|---|
sysprep-specialize-script-ps1 |
בפעם הראשונה במהלך ההפעלה הראשונית |
sysprep-specialize-script-cmd |
שנייה במהלך האתחול הראשוני |
sysprep-specialize-script-bat |
השלב השלישי במהלך האתחול הראשוני |
sysprep-specialize-script-url |
בפעם הרביעית במהלך ההפעלה הראשונית |
windows-startup-script-ps1 |
במהלך כל אתחול אחרי האתחול הראשוני |
windows-startup-script-cmd |
שנייה במהלך כל אתחול אחרי האתחול הראשוני |
windows-startup-script-bat |
שלישי במהלך כל אתחול אחרי האתחול הראשוני |
windows-startup-script-url |
רביעי במהלך כל אתחול אחרי האתחול הראשוני |
העברה ישירה של סקריפט לטעינה בזמן ההפעלה ב-Windows
העברת התוכן של קובץ אצווה, מעטפת פקודות או סקריפט הפעלה של PowerShell לא חתום ישירות למכונת VM של Windows Server. התהליכים הבאים מראים איך להעביר סקריפט PowerShell לא חתום.
המסוף
העברת סקריפט לטעינה בזמן ההפעלה של Windows ישירות למכונה וירטואלית חדשה
נכנסים לדף Create an instance במסוף Google Cloud .
בקטע דיסק אתחול, לוחצים על שינוי ופועלים לפי השלבים הבאים:
- בכרטיסייה תמונות ציבוריות, בוחרים מערכת הפעלה של Windows Server.
- לוחצים על בחירה.
מרחיבים את הקטע אפשרויות מתקדמות ומבצעים את הפעולות הבאות:
- מרחיבים את הקטע ניהול.
בקטע Metadata, לוחצים על Add item כדי להגדיר את Key ו-Value:
מפתח: מגדירים לערך
windows-startup-script-ps1.סקריפטים לטעינה בזמן ההפעלה שמועברים למכונה הווירטואלית באמצעות מפתחות מטא-נתונים שמתחילים ב-
windows-startup-script, פועלים בכל הפעלה אחרי ההפעלה הראשונית של המכונה הווירטואלית.Value (ערך): מוסיפים את הסקריפט הבא:
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script added directly.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
לוחצים על יצירה.
העברת סקריפט לטעינה בזמן ההפעלה של Windows ישירות למכונה וירטואלית קיימת
נכנסים לדף VM instances במסוף Google Cloud .
לוחצים על שם המכונה הווירטואלית.
לוחצים על Edit.
בקטע מטא-נתונים מציינים את הפרטים הבאים:
key:windows-startup-script-ps1-
value: התוכן של סקריפט לטעינה בזמן ההפעלה
אימות הסקריפט לטעינה בזמן ההפעלה
אחרי שהמכונה הווירטואלית מתחילה לפעול, פותחים את כתובת ה-IP החיצונית בדפדפן אינטרנט כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר. יכול להיות שתצטרכו להמתין כ-10 דקות עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסתיים.
gcloud (Bash)
העברה של סקריפט לטעינה בזמן ההפעלה של Windows ישירות למכונה וירטואלית חדשה
מעבירים את התוכן של סקריפט לטעינה בזמן ההפעלה ישירות למכונה וירטואלית של Windows Server כשיוצרים אותה באמצעות הפקודה gcloud compute
instances create הבאה:
gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
מחליפים את VM_NAME בשם המכונה הווירטואלית.
העברת סקריפט לטעינה בזמן ההפעלה של Windows ישירות למכונה וירטואלית קיימת
כדי להוסיף את הסקריפט לטעינה בזמן ההפעלה ישירות למכונה וירטואלית קיימת, משתמשים בפקודה gcloud compute instances add-metadata הבאה:
gcloud compute instances add-metadata VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
מחליפים את VM_NAME בשם המכונה הווירטואלית.
אימות סקריפט לטעינה בזמן ההפעלהאחרי שהמכונה הווירטואלית מתחילה לפעול, פותחים את כתובת ה-IP החיצונית בדפדפן אינטרנט כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר. יכול להיות שתצטרכו לחכות כ-10 דקות עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
gcloud (שורת הפקודה)
העברת סקריפט לטעינה בזמן ההפעלה של Windows ישירות למכונה וירטואלית חדשה
מעבירים את התוכן של סקריפט לטעינה בזמן ההפעלה ישירות למכונה וירטואלית של Windows Server כשיוצרים אותה באמצעות הפקודה gcloud compute
instances create הבאה:
gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
מחליפים את VM_NAME בשם של המכונה הווירטואלית.
העברת סקריפט לטעינה בזמן ההפעלה של Windows ישירות למכונה וירטואלית קיימת
מוסיפים את הסקריפט לטעינה בזמן ההפעלה ישירות למכונה וירטואלית קיימת באמצעות הפקודה gcloud compute instances add-metadata:
gcloud compute instances add-metadata VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
מחליפים את VM_NAME בשם המכונה הווירטואלית.
אימות סקריפט לטעינה בזמן ההפעלהאחרי שהמכונה הווירטואלית מופעלת, אפשר להציג את כתובת ה-IP החיצונית בדפדפן אינטרנט כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר. יכול להיות שתצטרכו לחכות כ-10 דקות עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
gcloud (PowerShell)
העברה של סקריפט לטעינה בזמן ההפעלה של Windows ישירות למכונה וירטואלית חדשה
מעבירים את התוכן של סקריפט לטעינה בזמן ההפעלה ישירות למכונה וירטואלית של Windows Server כשיוצרים אותה באמצעות הפקודה gcloud compute
instances create הבאה:
gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
מחליפים את VM_NAME בשם המכונה הווירטואלית.
העברת סקריפט לטעינה בזמן ההפעלה של Windows ישירות למכונה וירטואלית קיימת
כדי להוסיף את הסקריפט לטעינה בזמן ההפעלה ישירות למכונה וירטואלית קיימת, משתמשים בפקודה gcloud compute instances add-metadata הבאה:
gcloud compute instances add-metadata VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
מחליפים את VM_NAME בשם המכונה הווירטואלית.
אימות סקריפט לטעינה בזמן ההפעלהאחרי שהמכונה הווירטואלית מופעלת, אפשר להציג את כתובת ה-IP החיצונית בדפדפן אינטרנט כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר. יכול להיות שתצטרכו להמתין כ-10 דקות עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסתיים.
REST
העברת סקריפט לטעינה בזמן ההפעלה של Windows ישירות למכונה וירטואלית חדשה
כשיוצרים מכונה וירטואלית של Windows Server, אפשר להעביר את התוכן של סקריפט לטעינה בזמן ההפעלה ישירות למכונה באמצעות instances.insert השיטה הבאה.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
...
"networkInterfaces": [
{
"accessConfigs": [
{
"type": "ONE_TO_ONE_NAT"
}
]
}
],
"metadata": {
"items": [
{
"key": "windows-startup-script-ps1",
"value": "Import-Module servermanager\nInstall-WindowsFeature Web-Server -IncludeAllSubFeature\necho '<html><body><p>Windows startup script added directly.</p></body></html>' > C:\\inetpub\\wwwroot\\index.html"
}
]
},
...
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.
ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית.
העברת סקריפט לטעינה בזמן ההפעלה של Windows ישירות למכונה וירטואלית קיימת
מקבלים את הערך
metadata.fingerprintשל מכונת ה-VM באמצעות השיטהinstances.get:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו נמצאת מכונת ה-VM.
ZONE: האזור של המכונה הווירטואלית.
VM_NAME: שם ה-VM.
מעבירים את הסקריפט לטעינה בזמן ההפעלה באמצעות הערך
fingerprint, יחד עם המפתח והערך של המטא-נתונים של הסקריפט לטעינה בזמן ההפעלה, בקריאה לשיטהinstances.setMetadata:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "windows-startup-script-ps1", "value": "Import-Module servermanager\nInstall-WindowsFeature Web-Server -IncludeAllSubFeature\necho '<html><body><p>Windows startup script added directly.</p></body></html>' > C:\\inetpub\\wwwroot\\index.html" } ], ... }מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו נמצאת מכונת ה-VM.
ZONE: האזור של המכונה הווירטואלית.
VM_NAME: שם ה-VM.
FINGERPRINT: הערך
metadata.fingerprintשהתקבל באמצעות ה-methodinstances.get.
אימות סקריפט לטעינה בזמן ההפעלה
אחרי שהמכונה הווירטואלית מתחילה לפעול, פותחים את כתובת ה-IP החיצונית בדפדפן אינטרנט כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר. יכול להיות שתצטרכו להמתין כ-10 דקות עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסתיים.
העברת סקריפט לטעינה בזמן ההפעלה של Windows מקובץ מקומי
אתם יכולים לאחסן סקריפט לטעינה בזמן ההפעלה בקובץ אצווה מקומי, בסקריפט מעטפת פקודה או בסקריפט PowerShell לא חתום בתחנת העבודה, ולהעביר את הקובץ המקומי כמטא-נתונים למכונה וירטואלית כשאתם יוצרים אותה. אי אפשר להשתמש בקבצים שמאוחסנים במכונות וירטואליות כסקריפטים לטעינה בזמן ההפעלה.
לפני שמעבירים סקריפט לטעינה בזמן ההפעלה של Windows מקובץ מקומי למכונה וירטואלית, צריך לבצע את הפעולות הבאות:
יוצרים קובץ מקומי (
.ps1) לאחסון סקריפט לטעינה בזמן ההפעלה.שימו לב לנתיב היחסי מה-CLI של gcloud לסקריפט ההפעלה.
מוסיפים לקובץ את הסקריפט הבא לטעינה בזמן ההפעלה:
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script passed from a file on your local workstation.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
gcloud (Bash)
העברת סקריפט לטעינה בזמן ההפעלה של Windows מקובץ מקומי למכונה וירטואלית חדשה
כדי ליצור מכונה וירטואלית ולהעביר את התוכן של קובץ מקומי לשימוש כסקריפט לטעינה בזמן ההפעלה, משתמשים בפקודה gcloud compute instances create עם הדגל --metadata-from-file:
gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
מחליפים את מה שכתוב בשדות הבאים:
- VM_NAME: השם של ה-VM
- FILE_PATH: הנתיב היחסי לקובץ של סקריפט הסטארט-אפ
כדי להעביר סקריפט לטעינה בזמן ההפעלה ל-VM קיים מקובץ מקומי, משתמשים בפקודה הבאה של gcloud compute instances add-metadata:
gcloud compute instances add-metadata VM_NAME \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
מחליפים את מה שכתוב בשדות הבאים:
- VM_NAME: השם של ה-VM
- FILE_PATH: הנתיב היחסי לקובץ של סקריפט הסטארט-אפ
כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר, מציגים את כתובת ה-IP החיצונית בדפדפן אינטרנט. יכול להיות שתצטרכו לחכות כ-10 דקות עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
gcloud (שורת הפקודה)
העברת סקריפט לטעינה בזמן ההפעלה של Windows מקובץ מקומי למכונה וירטואלית חדשה
כדי ליצור מכונה וירטואלית ולהעביר את התוכן של קובץ מקומי לשימוש כסקריפט לטעינה בזמן ההפעלה, משתמשים בפקודה gcloud compute instances create עם הדגל --metadata-from-file:
gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
מחליפים את מה שכתוב בשדות הבאים:
- VM_NAME: השם של ה-VM
- FILE_PATH: הנתיב היחסי לקובץ של סקריפט הסטארט-אפ
כדי להעביר סקריפט לטעינה בזמן ההפעלה ל-VM קיים מקובץ מקומי, משתמשים בפקודה gcloud compute instances add-metadata הבאה:
gcloud compute instances add-metadata VM_NAME ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
מחליפים את מה שכתוב בשדות הבאים:
- VM_NAME: השם של ה-VM
- FILE_PATH: הנתיב היחסי לקובץ של סקריפט הסטארט-אפ
כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר, מציגים את כתובת ה-IP החיצונית בדפדפן אינטרנט. יכול להיות שתצטרכו להמתין כ-10 דקות עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
gcloud (PowerShell)
העברת סקריפט לטעינה בזמן ההפעלה של Windows מקובץ מקומי למכונה וירטואלית חדשה
כדי ליצור מכונה וירטואלית ולהעביר את התוכן של קובץ מקומי לשימוש כסקריפט לטעינה בזמן ההפעלה, משתמשים בפקודה gcloud compute instances create עם הדגל --metadata-from-file:
gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
מחליפים את מה שכתוב בשדות הבאים:
- VM_NAME: השם של ה-VM
- FILE_PATH: הנתיב היחסי לקובץ של סקריפט הסטארט-אפ
כדי להעביר סקריפט לטעינה בזמן ההפעלה ל-VM קיים מקובץ מקומי, משתמשים בפקודה gcloud compute instances add-metadata הבאה:
gcloud compute instances add-metadata VM_NAME ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
מחליפים את מה שכתוב בשדות הבאים:
- VM_NAME: השם של ה-VM
- FILE_PATH: הנתיב היחסי לקובץ של סקריפט הסטארט-אפ
כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר, מציגים את כתובת ה-IP החיצונית בדפדפן אינטרנט. יכול להיות שתצטרכו להמתין כ-10 דקות עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסתיים.
העברת סקריפט לטעינה בזמן ההפעלה של Windows מ-Cloud Storage
אתם יכולים לאחסן סקריפט לטעינה בזמן ההפעלה כקובץ אצווה, כסקריפט מעטפת פקודות, כסקריפט PowerShell חתום או לא חתום או כקובץ הפעלה ב-Cloud Storage, ולהעביר אותו למכונה וירטואלית כשאתם יוצרים אותה. אחרי שמוסיפים סקריפט לטעינה בזמן ההפעלה ל-Cloud Storage, מקבלים כתובת URL שאפשר להשתמש בה כדי להפנות לסקריפט לטעינה בזמן ההפעלה כשיוצרים מכונה וירטואלית.
לפני שמוסיפים סקריפט לטעינה בזמן ההפעלה מקטגוריה של Cloud Storage, צריך לבצע את הפעולות הבאות:
יוצרים קובץ לאחסון הסקריפט לטעינה בזמן ההפעלה. בדוגמה הזו נעשה שימוש בקובץ PowerShell (
.ps1).מוסיפים לקובץ את סקריפט PowerShell הבא, שמתקין שרת אינטרנט ויוצר דף אינטרנט פשוט:
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script passed from Cloud Storage.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
השלכות על האבטחה
כברירת מחדל, לבעלי הפרויקט ולעורכי הפרויקט יש גישה לקבצים ב-Cloud Storage באותו פרויקט, אלא אם יש אמצעי בקרה מפורשים על הגישה שמונעים זאת.
אם הקטגוריה של Cloud Storage או האובייקט פחות מאובטחים מהמטא-נתונים, יש סיכון להסלמת הרשאות אם סקריפט לטעינה בזמן ההפעלה משתנה וה-VM מופעל מחדש. הסיבה לכך היא שאחרי שהמכונה הווירטואלית מופעלת מחדש, סקריפט לטעינה בזמן ההפעלה פועל בתור
LocalSystemויכול להשתמש בהרשאות של חשבון השירות המצורף כדי לגשת למשאבים אחרים.
המסוף
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית חדשה
נכנסים לדף Create an instance במסוף Google Cloud .
בקטע דיסק אתחול, לוחצים על שינוי ופועלים לפי השלבים הבאים:
- בכרטיסייה תמונות ציבוריות, בוחרים מערכת הפעלה של Windows Server.
- לוחצים על בחירה.
בקטע Identity and API access (זהות וגישה ל-API), בוחרים חשבון שירות עם התפקיד Storage Object Viewer (צפייה באובייקטים ב-Storage).
מרחיבים את הקטע Advanced options ומבצעים את הפעולות הבאות:
- מרחיבים את הקטע ניהול.
בקטע מטא-נתונים, מוסיפים ערכים לפריטים הבאים:
מפתח: מפתח המטא-נתונים. מציינים את מפתח המטא-נתונים
windows-startup-script-urlכדי שהסקריפט יפעל במהלך כל אתחול אחרי האתחול הראשוני.Value: ערך המטא-נתונים. מגדירים את המיקום של קובץ הסקריפט לטעינה בזמן ההפעלה ב-Cloud Storage באמצעות אחד מהפורמטים הבאים:
- Authenticated URL:
https://storage.googleapis.com/BUCKET/FILE - gcloud storage URI:
gs://BUCKET/FILE
מחליפים את מה שכתוב בשדות הבאים:
- BUCKET: השם של דלי ה-Storage שמכיל את קובץ סקריפט לטעינה בזמן ההפעלה
- FILE: השם של קובץ סקריפט לטעינה בזמן ההפעלה
- Authenticated URL:
כדי ליצור את המכונה הווירטואלית (VM), לוחצים על האפשרות Create.
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית קיימת
נכנסים לדף VM instances במסוף Google Cloud .
לוחצים על Name של המכונה הווירטואלית.
לוחצים על Edit.
בקטע מטא-נתונים, מוסיפים את הערכים הבאים:
- Authenticated URL:
https://storage.googleapis.com/BUCKET/FILE - gcloud storage URI:
gs://BUCKET/FILE
- Authenticated URL:
אימות סקריפט לטעינה בזמן ההפעלה
כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר, מציגים את כתובת ה-IP החיצונית בדפדפן אינטרנט. יכול להיות שתצטרכו להמתין כ-10 דקות עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסתיים.
gcloud (Bash)
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית חדשה
כדי להעביר סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונת Windows Server וירטואלית, משתמשים בפקודה gcloud compute instances create הבאה. כדי שהמכונה הווירטואלית תוכל לגשת ל-Cloud Storage, צריך להשתמש בערך storage-ro עבור הדגל --scopes.
gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --scopes=storage-ro \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
מחליפים את מה שכתוב בשדות הבאים:
- VM_NAME: שם ה-VM.
-
CLOUD_STORAGE_URL: ערכי המטא-נתונים. מגדירים את המיקום של קובץ סקריפט לטעינה בזמן ההפעלה באחד מהפורמטים הבאים:
-
כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE -
gcloud storage URI:
gs://BUCKET/FILE
-
כתובת URL מאומתת:
כדי להעביר סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית קיימת, משתמשים בפקודה gcloud compute instances add-metadata הבאה:
gcloud compute instances add-metadata VM_NAME \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
מחליפים את מה שכתוב בשדות הבאים:
- VM_NAME: שם ה-VM.
-
CLOUD_STORAGE_URL: ערכי המטא-נתונים. מגדירים את המיקום של קובץ סקריפט לטעינה בזמן ההפעלה באחד מהפורמטים הבאים:
-
כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE -
gcloud storage URI:
gs://BUCKET/FILE
-
כתובת URL מאומתת:
כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר, פותחים את כתובת ה-IP החיצונית בדפדפן אינטרנט. יכול להיות שתצטרכו להמתין כ-10 דקות עד שסקריפט ההפעלה לדוגמה יסתיים.
gcloud (שורת הפקודה)
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית חדשה
כדי להעביר סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונת Windows Server וירטואלית, משתמשים בפקודה gcloud compute instances create הבאה. כדי שהמכונה הווירטואלית תוכל לגשת ל-Cloud Storage, צריך להשתמש בערך storage-ro עבור הדגל --scopes.
gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --scopes=storage-ro ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
מחליפים את מה שכתוב בשדות הבאים:
- VM_NAME: שם ה-VM.
-
CLOUD_STORAGE_URL: ערכי המטא-נתונים. מגדירים את המיקום של קובץ סקריפט לטעינה בזמן ההפעלה באחד מהפורמטים הבאים:
-
כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE -
gcloud storage URI:
gs://BUCKET/FILE
-
כתובת URL מאומתת:
כדי להעביר סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית קיימת, משתמשים בפקודה הבאה של gcloud compute instances add-metadata:
gcloud compute instances add-metadata VM_NAME ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
מחליפים את מה שכתוב בשדות הבאים:
- VM_NAME: שם ה-VM.
-
CLOUD_STORAGE_URL: ערכי המטא-נתונים. מגדירים את המיקום של קובץ סקריפט לטעינה בזמן ההפעלה באחד מהפורמטים הבאים:
-
כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE -
gcloud storage URI:
gs://BUCKET/FILE
-
כתובת URL מאומתת:
כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר, צופים בכתובת ה-IP החיצונית בדפדפן אינטרנט. יכול להיות שתצטרכו להמתין כ-10 דקות עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסתיים.
gcloud (PowerShell)
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית חדשה
כדי להעביר סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונת Windows Server וירטואלית, משתמשים בפקודה gcloud compute instances create הבאה. כדי שהמכונה הווירטואלית תוכל לגשת ל-Cloud Storage, צריך להשתמש בערך storage-ro עבור הדגל --scopes.
gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --scopes=storage-ro ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
מחליפים את מה שכתוב בשדות הבאים:
- VM_NAME: שם ה-VM.
-
CLOUD_STORAGE_URL: ערכי המטא-נתונים. מגדירים את המיקום של קובץ סקריפט לטעינה בזמן ההפעלה באחד מהפורמטים הבאים:
-
כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE -
gcloud storage URI:
gs://BUCKET/FILE
-
כתובת URL מאומתת:
כדי להעביר סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית קיימת, משתמשים בפקודה הבאה של gcloud compute instances add-metadata:
gcloud compute instances add-metadata VM_NAME ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
מחליפים את מה שכתוב בשדות הבאים:
- VM_NAME: שם ה-VM.
-
CLOUD_STORAGE_URL: ערכי המטא-נתונים. מגדירים את המיקום של קובץ סקריפט לטעינה בזמן ההפעלה באחד מהפורמטים הבאים:
-
כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE -
gcloud storage URI:
gs://BUCKET/FILE
-
כתובת URL מאומתת:
כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר, צופים בכתובת ה-IP החיצונית בדפדפן אינטרנט. יכול להיות שתצטרכו להמתין כ-10 דקות עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
REST
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית חדשה
כדי להעביר סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית של Windows Server, משתמשים בשיטה instances.insert. בשדה scopes מוסיפים https://www.googleapis.com/auth/devstorage.read_only כדי שהמכונה הווירטואלית תוכל לגשת ל-Cloud Storage.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
...
"networkInterfaces": [
{
"accessConfigs": [
{
"type": "ONE_TO_ONE_NAT"
}
]
}
],
"serviceAccounts": [
{
"email": "default",
"scopes": [
"https://www.googleapis.com/auth/devstorage.read_only"
]
}
],
"metadata": {
"items": [
{
"key": "windows-startup-script-url",
"value": "CLOUD_STORAGE_URL"
},
...
]
},
...
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.
ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית.
CLOUD_STORAGE_URL: הערך של המטא-נתונים. מגדירים את המיקום של קובץ הסקריפט לטעינה בזמן ההפעלה ב-Cloud Storage באחד מהפורמטים הבאים:
- כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE - gcloud storage URI:
gs://BUCKET/FILE
- כתובת URL מאומתת:
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית קיימת
משיגים את הערך
metadata.fingerprintשל המכונה הווירטואלית באמצעות ה-methodinstances.get:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו נמצאת מכונת ה-VM.
ZONE: האזור של המכונה הווירטואלית.
VM_NAME: השם של ה-VM
מעבירים את הסקריפט לטעינה בזמן ההפעלה באמצעות הערך
fingerprint, יחד עם מפתח המטא-נתונים והערך של הסקריפט לטעינה בזמן ההפעלה, בקריאה לשיטהinstances.setMetadata:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "windows-startup-script-url", "value": "CLOUD_STORAGE_URL" } ], ... }מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו נמצאת מכונת ה-VM.
ZONE: האזור של המכונה הווירטואלית.
VM_NAME: שם המכונה הווירטואלית.
FINGERPRINT: הערך
metadata.fingerprintשהתקבל באמצעות ה-methodinstances.get.CLOUD_STORAGE_URL: ערך המטא-נתונים. מגדירים את המיקום של קובץ הסקריפט לטעינה בזמן ההפעלה ב-Cloud Storage באחד מהפורמטים הבאים:
- כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE - gcloud storage URI:
gs://BUCKET/FILE
- כתובת URL מאומתת:
אימות סקריפט לטעינה בזמן ההפעלה
כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר, מציגים את כתובת ה-IP החיצונית בדפדפן אינטרנט. יכול להיות שתצטרכו להמתין כ-10 דקות עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
גישה למטא-נתונים מסקריפט לטעינה בזמן ההפעלה של Windows
בסקריפט לטעינה בזמן ההפעלה אפשר לגשת לערכי מטא-נתונים. לדוגמה, אפשר להשתמש באותו סקריפט לכמה מכונות וירטואליות, ולהגדיר פרמטרים לכל סקריפט בנפרד על ידי העברת ערכים שונים של מטא-נתונים לכל מכונה וירטואלית.
כדי לגשת לערך של מטא-נתונים בהתאמה אישית מסקריפט לטעינה בזמן ההפעלה:
יוצרים סקריפט לטעינה בזמן ההפעלה ששולח שאילתה לגבי הערך של מפתח מטא-נתונים. לדוגמה, סקריפט לטעינה בזמן ההפעלה הבא של PowerShell (
.ps1) שולח שאילתה לגבי הערך של מפתח המטא-נתוניםfoo.$METADATA_VALUE = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'} -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/foo") # Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Accessing metadata value of foo: $METADATA_VALUE</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Forceכדי להגדיר את הערך של מפתח המטא-נתונים
fooכשיוצרים מכונה וירטואלית, משתמשים בפקודה הבאהgcloud compute instances create. בדוגמה הזו, סקריפט לטעינה בזמן ההפעלה מועבר למכונה הווירטואלית מקובץ מקומי.gcloud
gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019 \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH \ --metadata=foo=bar
מחליפים את מה שכתוב בשדות הבאים:
VM_NAME: השם של ה-VM
FILE_PATH: הנתיב היחסי לקובץ של סקריפט ההפעלה
במאמר הגדרה והסרה של מטא-נתונים בהתאמה אישית מוסבר איך מציינים צמד של מפתח/ערך למטא-נתונים.
מציגים את כתובת ה-IP החיצונית בדפדפן אינטרנט כדי לוודא שסקריפט לטעינה בזמן ההפעלה מפיק את הערך של
foo. יכול להיות שתצטרכו לחכות כ-10 דקות עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
הפעלה מחדש של סקריפט לטעינה בזמן ההפעלה ב-Windows
כדי להריץ מחדש סקריפט לטעינה בזמן ההפעלה במכונה וירטואלית של Windows:
הרצת הפקודה הבאה:
C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd
צפייה בפלט של סקריפט לטעינה בזמן ההפעלה של Windows
כדי לראות את הפלט מסקריפט לטעינה בזמן ההפעלה של Windows Server, משתמשים באחת מהאפשרויות הבאות ובודקים אם יש אירועים מסוג GCEMetadataScripts:
יציאה טורית 1 במסוף Google Cloud . מידע נוסף זמין במאמר הצגת הפלט של היציאה הטורית.
יומן האפליקציות של Windows Event Viewer.
IAP Desktop מתחנת עבודה של Windows. מידע נוסף אפשר למצוא במאגר GoogleCloudPlatform/iap-desktop ב-GitHub.