סקריפט לטעינה בזמן ההפעלה מבצע משימות במהלך תהליך ההפעלה של מכונה וירטואלית (VM). בדף הזה מוסבר איך להשתמש בסקריפטים להפעלה במכונות וירטואליות.
לפני שמתחילים
כדי להשתמש בפקודות של ממשק שורת הפקודה (CLI) של gdcloud, צריך לוודא שהורדתם, התקנתם והגדרתם את gdcloud CLI.
כל הפקודות למכשיר GDC עם air gap משתמשות ב-CLI gdcloud או kubectl, ודורשות סביבת מערכת הפעלה (OS).
קבלת הנתיב של קובץ kubeconfig
כדי להריץ פקודות בשרת Management API, צריך לוודא שיש לכם את המשאבים הבאים:
מאתרים את שם השרת של Management API או שואלים את מנהל הפלטפורמה מה שם השרת.
נכנסים ויוצרים את קובץ ה-kubeconfig לשרת Management API אם אין לכם כזה.
משתמשים בנתיב כדי להחליף את
MANAGEMENT_API_SERVER{"</var>"}}בהוראות האלה.
שליחת בקשה לתפקידי IAM
כדי להשתמש בסקריפטים להפעלה של מכונה וירטואלית, צריך לפנות לאדמין של IAM בפרויקט ולבקש את התפקידים הבאים בפרויקט:
Project VirtualMachine Admin (
project-vm-admin): יצירה, שינוי, הצגה ומחיקה של מכונות וירטואליות במרחב השמות של הפרויקט.Secret Admin (
secret-admin): get, list, create, update, delete, patch, and watch Kubernetes secrets in the project namespace. משתמשים בתפקיד הזה כדי לציין סודות של סקריפט לטעינה בזמן ההפעלה. לא צריך את התפקיד הזה כדי לציין סקריפטים להפעלה של טקסט פשוט.
כל התפקידים של המכונות הווירטואליות צריכים להיות קשורים למרחב השמות של הפרויקט שבו נמצאת המכונה הווירטואלית. פועלים לפי השלבים כדי לאמת את הגישה.
פורמט שמות של סקריפטים לטעינה בזמן ההפעלה של Windows
סקריפטים להפעלה של מכונות וירטואליות של Windows צריכים להיות בפורמט שמות ספציפי, עם שם הסקריפט וסיומת הקובץ, מופרדים במקפים. לדוגמה, create-directory-ps1, כאשר create-directory הוא שם הסקריפט ו-ps1 היא סיומת הקובץ. פורמטים שגויים כוללים שימוש בנקודות במקום במקפים והשמטה של סיומת הקובץ, כמו create-directory.ps1 ו-create-directory.
בהמשך מוצגות סיומות הקבצים שבהן צריך להשתמש בסקריפטים להפעלה של Windows:
-
ps1: מכיל פקודות PowerShell. -
cmd: מכיל פקודות אצווה עבור המפרש של שורת הפקודה. -
bat: מכיל פקודות להפעלת תהליכים באצווה.
הרצת סקריפטים להפעלה של Windows לפי סדר
אפשר להשתמש בכמה סקריפטים לטעינה בזמן ההפעלה. סוג הקובץ שמכיל את הסקריפט משפיע על סדר ההפעלה של כל סקריפט. בטבלה הבאה מוצג הסדר שבו מופעלים סקריפטים להפעלה של Windows:
| סקריפט Windows | סדר ההרצה |
|---|---|
| סקריפט Powershell | בכל אתחול. |
| סקריפט Batch | בפעם השנייה בכל הפעלה. |
| סקריפט פקודות | בפעם השלישית בכל הפעלה. |
אם לשני סקריפטים להפעלה יש את אותה סיומת קובץ, הסקריפטים מופעלים לפי סיומת הקובץ והשם בסדר אלפביתי. לדוגמה, אם שמות סקריפטים לטעינה בזמן ההפעלה הם alpha-script-ps1 ו-beta-script-ps1, הסקריפט alpha-script-ps1 יפעל לפני beta-script-ps1.
בדוגמה הבאה של הגדרת מכונה וירטואלית מוצגים הסדר והמבנה של סקריפט לטעינה בזמן ההפעלה של 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
...
העברת סקריפט לטעינה בזמן ההפעלה
מכשיר GDC עם air gap מפעיל סקריפטים לטעינה בזמן ההפעלה בסדר אלפביתי, על סמך השם של כל סקריפט לטעינה בזמן ההפעלה.
בטבלה הבאה מפורט פורמט התסריט שבו צריך להשתמש בהתאם לגודל התסריט:
| גודל התסריט | פורמט התסריט |
|---|---|
| סקריפטים עד 2,048 בייט | טקסט גלוי |
| סקריפטים שגדולים מ-2048 בייט | סוד ב-Kubernetes |
הגדרת סקריפט לטעינה בזמן ההפעלה
כדי להשתמש בסקריפט לטעינה בזמן ההפעלה, צריך להוסיף את השדה startupScripts ל-VM spec
field. בשדה הזה אפשר לציין כמה סקריפטים להפעלה כטקסט רגיל או כסוד של 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==
כדאי לעיין בשיקולים הבאים:
- סקריפט לטעינה בזמן ההפעלה פועל בכל אתחול.
- לסקריפט לטעינה בזמן ההפעלה יש הרשאות ברירת מחדל של root.
- בסוד של Kubernetes, השם של
scriptSecretRefבמכונה הווירטואליתspecחייב להיות זהה לשדהmetadata.name. - בסוד של Kubernetes, מציינים את התוכן של סקריפט לטעינה בזמן ההפעלה על ידי הוספת מפתח
scriptלשדהdata.
יצירת מכונה וירטואלית חדשה עם סקריפט לטעינה בזמן ההפעלה של Windows
כדי ליצור מכונה וירטואלית עם סקריפט לטעינה בזמן ההפעלה של Windows, פועלים לפי השלבים במאמר יצירת מכונה וירטואלית חדשה עם סקריפט לטעינה בזמן ההפעלה.