סקריפט לטעינה בזמן ההפעלה מבצע משימות במהלך תהליך ההפעלה של מכונה וירטואלית (VM). במאמר הזה מוסבר איך משתמשים בסקריפטים לטעינה בזמן ההפעלה במכונות וירטואליות.
סקריפט לטעינה בזמן ההפעלה הוא כלי אוטומציה שמבצע משימות במהלך תהליך ההפעלה של ה-VM. סקריפטים לטעינה בזמן ההפעלה מאפשרים להפוך את משימות ההגדרה והפריסה של מכונות וירטואליות חדשות או קיימות לאוטומטיות, וכך לחסוך זמן ולצמצם את הצורך בהגדרה ידנית.
המסמך הזה מיועד למפתחים בקבוצות של אדמינים של פלטפורמות או של מפעילי אפליקציות, שרוצים להשתמש בסקריפטים לטעינה בזמן ההפעלה של מכונות וירטואליות בסביבת Distributed Cloud. מידע נוסף מופיע במאמר קהלים למסמכי תיעוד של GDC עם air gap.
לפני שמתחילים
כדי להשתמש בפקודות של ממשק שורת הפקודה (CLI) של gdcloud, צריך לוודא שהורדתם, התקנתם והגדרתם את ה-CLI של gdcloud.
כל הפקודות של Distributed Cloud משתמשות ב-CLI של gdcloud או kubectl, ודורשות סביבה של מערכת הפעלה (OS).
קבלת נתיב הקובץ של kubeconfig
כדי להריץ פקודות בשרת Management API, צריך לוודא שיש לכם את המשאבים הבאים:
אם אין לכם קובץ kubeconfig לשרת Management API, נכנסים לחשבון ויוצרים אותו.
בהוראות הבאות, מחליפים את
MANAGEMENT_API_SERVERבנתיב לקובץ kubeconfig של שרת Management API.
בקשת תפקידים ב-IAM
כדי להשתמש בסקריפטים לטעינה בזמן ההפעלה של VM, צריך לבקש מהאדמין של הפרויקט ב-IAM להקצות לכם את התפקידים הבאים בפרויקט:
אדמין של פרויקט מכונות וירטואליות (
project-vm-admin): יצירה, שינוי, הצגה ומחיקה של מכונות וירטואליות במרחב השמות של הפרויקט.אדמין של סודות (
secret-admin): קבלת סודות של Kubernetes, הצגת רשימה שלהם, יצירה, עדכון, מחיקה, תיקון ומעקב אחריהם במרחב השמות של הפרויקט. התפקיד הזה משמש לציון סודות של סקריפט לטעינה בזמן ההפעלה. אתם לא צריכים את התפקיד הזה כדי לציין סקריפטים לטעינה בזמן ההפעלה בטקסט פשוט.
כל התפקידים של המכונה הווירטואלית חייבים להיות מקושרים למרחב השמות של הפרויקט שבו נמצאת המכונה הווירטואלית. פועלים לפי השלבים כדי לאמת את הגישה.
פורמט השמות של סקריפטים לטעינה בזמן ההפעלה של Windows
סקריפטים לטעינה בזמן ההפעלה של מכונות Windows VM חייבים להיות בפורמט ספציפי של מתן שמות, שכולל את שם הסקריפט וסיומת הקובץ, כשהם מופרדים במקפים. לדוגמה, create-directory-ps1, כאשר create-directory הוא שם הסקריפט ו-ps1 הוא סיומת הקובץ. פורמטים שגויים כוללים שימוש בנקודות במקום במקפים והשמטת סיומת הקובץ, כמו create-directory.ps1 ו-create-directory.
אלה סיומות הקבצים שצריך להשתמש בהן בסקריפטים לטעינה בזמן ההפעלה של Windows:
-
ps1: מכיל פקודות PowerShell. -
cmd: מכיל פקודות אצווה למפרש של שורת הפקודה. -
bat: מכיל פקודות באצ'.
הפעלת סקריפטים לטעינה בזמן ההפעלה של Windows לפי הסדר
אפשר להשתמש בכמה סקריפטים לטעינה בזמן ההפעלה. סוג הקובץ שמכיל את הסקריפט משפיע על סדר ההרצה של כל סקריפט. בטבלה הבאה מוצג סדר ההרצה של סקריפטים לטעינה בזמן ההפעלה של Windows:
| סקריפט של Windows | סדר ההרצה |
|---|---|
| סקריפט Powershell | קודם כול, בכל הפעלה. |
| סקריפט אצווה | בכל הפעלה של המכשיר. |
| סקריפט פקודה | שלישית בכל הפעלה. |
אם לשני סקריפטים לטעינה בזמן ההפעלה יש את אותה סיומת קובץ, הסקריפטים מופעלים לפי סיומת הקובץ והשם בסדר אלפביתי. לדוגמה, אם השמות של הסקריפטים לטעינה בזמן ההפעלה הם alpha-script-ps1 ו-beta-script-ps1, הסקריפט alpha-script-ps1 יופעל לפני beta-script-ps1.
בדוגמה הבאה של מפרט VM מוצגים הסדר והמבנה של הסקריפט לטעינה בזמן ההפעלה של Windows בשדה startupScripts:
# …
startupScripts:
- name: create-directory-ps1
script: |-
New-Item -ItemType Directory -Path C:\ -Name NewDir
Get-ChildItem -Path C:\
- name: hello-world-bat
script: |-
ECHO "Hello World!"
- name: list-directories-cmd
script: |-
dir C:\Windows > files.txt
# …
העברת סקריפט לטעינה בזמן ההפעלה
ב-Distributed Cloud, הסקריפטים לטעינה בזמן ההפעלה פועלים לפי סדר אלפביתי, בהתאם לשם של כל סקריפט.
בטבלה הבאה מוצג הפורמט של הסקריפט שבו צריך להשתמש בהתאם לגודל הסקריפט:
| גודל הסקריפט | פורמט הסקריפט |
|---|---|
| סקריפטים בגודל של עד 2,048 בייטים | מחיקת הטקסט |
| סקריפטים שגדולים מ-2,048 בייטים | סוד ב-Kubernetes |
הגדרת סקריפט לטעינה בזמן ההפעלה
כדי להשתמש בסקריפט לטעינה בזמן ההפעלה, צריך להוסיף את השדה startupScripts לשדה spec של המכונה הווירטואלית. בשדה הזה אפשר לציין כמה סקריפטים לטעינה בזמן ההפעלה כטקסט פשוט או כסוד של Kubernetes.
בדוגמה הבאה, הסקריפטים לטעינה בזמן ההפעלה מוגדרים כטקסט ברור וכסוד של Kubernetes:
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachine
metadata:
name: "vm-test"
spec:
# …
startupScripts:
- name: create-directory-ps1
script: |-
New-Item -ItemType Directory -Path C:\ -Name NewDir
Get-ChildItem -Path C:\
- name: list-directories-cmd
scriptSecretRef:
name: list-directories
---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: list-directories
data:
script:
ZGlyIEM6XFdpbmRvd3MgID4gZmlsZXMudHh0Cg==
כדאי להביא בחשבון את השיקולים הבאים:
- הסקריפט לטעינה בזמן ההפעלה פועל בכל הפעלה.
- לסקריפט לטעינה בזמן ההפעלה יש הרשאות בסיסיות כברירת מחדל.
- בסוד של Kubernetes, השם של
scriptSecretRefבמכונה הווירטואליתspecצריך להיות זהה לשדהmetadata.name. - בסוד של Kubernetes, מציינים את תוכן הסקריפט לטעינה בזמן ההפעלה על ידי הוספת מפתח
scriptלשדהdata.
יצירת מכונה וירטואלית חדשה עם סקריפט לטעינה בזמן ההפעלה של Windows
כדי ליצור מכונה וירטואלית עם סקריפט לטעינה בזמן ההפעלה של Windows, פועלים לפי השלבים שמפורטים במאמר יצירת מכונה וירטואלית חדשה עם סקריפט לטעינה בזמן ההפעלה.