סקריפט לטעינה בזמן ההפעלה הוא קובץ שמבצע משימות במהלך תהליך ההפעלה של מכונה וירטואלית (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 כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Google Cloud
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 לא חתום ישירות למכונה וירטואלית של Windows Server. ההליכים הבאים מראים איך להעביר סקריפט PowerShell לא חתום.
המסוף
העברת סקריפט לטעינה בזמן ההפעלה של Windows ישירות למכונה וירטואלית חדשה
נכנסים לדף Create an instance במסוף Google Cloud .
בקטע Boot disk (דיסק אתחול), לוחצים על Change (שינוי) ופועלים לפי השלבים הבאים:
- בכרטיסייה תמונות ציבוריות, בוחרים מערכת הפעלה של Windows Server.
- לוחצים על בחירה.
מרחיבים את הקטע אפשרויות מתקדמות ומבצעים את הפעולות הבאות:
- מרחיבים את הקטע ניהול.
בקטע Metadata (מטא נתונים), לוחצים על Add item (הוספת פריט) כדי להגדיר את Key (מפתח) ואת Value (ערך):
מפתח: הערך הוא
windows-startup-script-ps1.סקריפטים להפעלה מועברים אל המכונה הווירטואלית באמצעות מפתחות מטא-נתונים שמתחילים ב-
windows-startup-script, ומופעלים בכל אתחול אחרי האתחול הראשוני של המכונה הווירטואלית.ערך: מוסיפים את הסקריפט הבא:
# 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 .
בקטע Boot disk (דיסק אתחול), בוחרים באפשרות Change (שינוי) ומבצעים את הפעולות הבאות:
- בכרטיסייה תמונות ציבוריות, בוחרים מערכת הפעלה של Windows Server.
- לוחצים על בחירה.
בקטע Identity and API access (זהות וגישה ל-API), בוחרים חשבון שירות עם התפקיד Storage Object Viewer (צפייה באובייקטים ב-Storage).
מרחיבים את הקטע אפשרויות מתקדמות ומבצעים את הפעולות הבאות:
- מרחיבים את הקטע ניהול.
בקטע מטא-נתונים, מוסיפים ערכים לפריטים הבאים:
מפתח: מפתח המטא-נתונים. מציינים את
windows-startup-script-urlמפתח המטא-נתונים כדי שהסקריפט יפעל במהלך כל אתחול אחרי האתחול הראשוני.ערך: ערך המטא-נתונים. מגדירים את המיקום של קובץ הסקריפט לטעינה בזמן ההפעלה ב-Cloud Storage באמצעות אחד מהפורמטים הבאים:
- כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE - URI של gcloud storage:
gs://BUCKET/FILE
מחליפים את מה שכתוב בשדות הבאים:
- BUCKET: השם של דלי ה-Cloud Storage שמכיל את קובץ סקריפט לטעינה בזמן ההפעלה
- FILE: השם של קובץ הסקריפט לטעינה בזמן ההפעלה
- כתובת URL מאומתת:
כדי ליצור את המכונה הווירטואלית (VM), לוחצים על האפשרות Create.
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית קיימת
נכנסים לדף VM instances במסוף Google Cloud .
לוחצים על השם של המכונה הווירטואלית.
לוחצים על Edit.
בקטע מטא-נתונים, מוסיפים את הערכים הבאים:
- כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE - URI של gcloud storage:
gs://BUCKET/FILE
- כתובת 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 -
URI של gcloud storage:
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 -
URI של gcloud storage:
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 -
URI של gcloud storage:
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 -
URI של gcloud storage:
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 -
URI של gcloud storage:
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 -
URI של gcloud storage:
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 - URI של gcloud storage:
gs://BUCKET/FILE
- כתובת URL מאומתת:
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית קיימת
כדי לקבל את הערך
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-url", "value": "CLOUD_STORAGE_URL" } ], ... }מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו נמצאת מכונת ה-VM.
ZONE: האזור של המכונה הווירטואלית.
VM_NAME: שם ה-VM.
FINGERPRINT: הערך
metadata.fingerprintשהתקבל באמצעות ה-methodinstances.get.CLOUD_STORAGE_URL: ערך המטא-נתונים. מגדירים את המיקום של קובץ הסקריפט לטעינה בזמן ההפעלה ב-Cloud Storage באמצעות אחד מהפורמטים הבאים:
- כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE - URI של gcloud storage:
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: הנתיב היחסי לקובץ של סקריפט ההפעלה
מידע נוסף על ציון צמד של מפתח וערך של מטא-נתונים זמין במאמר הגדרת מטא-נתונים בהתאמה אישית והסרתם.
כדי לוודא שסקריפט לטעינה בזמן ההפעלה מוציא את הערך של
foo, אפשר להציג את כתובת ה-IP החיצונית בדפדפן אינטרנט. יכול להיות שתצטרכו להמתין כ-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.