אחד היתרונות בשימוש בתבניות הוא האפשרות ליצור ולהגדיר מאפייני תבנית בהתאמה אישית. מאפייני התבנית הם משתנים שרירותיים שאתם מגדירים בקובצי התבנית. כל קובץ הגדרה או קובץ תבנית שמשתמש בתבנית הרלוונטית יכול לספק ערך למאפיין התבנית בלי לשנות את התבנית ישירות. כך אפשר להפריד את הנכס כדי לשנות את הערך שלו לכל הגדרה ייחודית בלי לעדכן את התבנית הבסיסית.
לדוגמה, השורה הבאה מציינת מאפיין של תבנית בכתובת ה-URL של סוג המכונה:
machineType: zones/{{ properties["zone"] }}/machineTypes/n1-standard-1
בהגדרה שמשתמשת בתבנית הזו, אפשר להגדיר את הערך של zone
בקטע properties של התבנית:
imports: - path: vm_template.jinja resources: - name: my-vm type: vm_template.jinja properties: zone: us-central1-a
המערכת של Deployment Manager תדע להעביר את הערך של zone לתבנית הבסיסית.
לפני שמתחילים
- אם רוצים להשתמש בדוגמאות לשורת הפקודה במדריך הזה, צריך להתקין את כלי שורת הפקודה`gcloud`.
- כדי להשתמש בדוגמאות ל-API במדריך הזה, צריך להגדיר גישה ל-API.
- איך יוצרים תבנית בסיסית
- איך יוצרים הגדרה
יצירת נכס תבנית
כדי ליצור נכס תבנית:
Jinja
ב-Jinja, מגדירים מאפיין באמצעות התחביר הבא:
{{ properties["PROJECT_NAME"] }}
לדוגמה:
Python
ב-Python, מגדירים מאפיין באמצעות התחביר הבא:
context.properties["PROPERTY_NAME"]
לדוגמה:
הדוגמה המלאה ב-Python זמינה במאגר GitHub של Deployment Manager.
קביעת ערכים למאפייני תבנית בהגדרת התצורה ברמה העליונה
בהגדרה ברמה העליונה, אפשר להגדיר ערכים למאפייני התבנית באמצעות התחביר:
imports: - path: vm_template.jinja resources: - name: my-vm type: vm_template.jinja properties: zone: us-central1-a
חובה להגדיר ערכים לכל מאפייני התבנית בתבנית. לדוגמה, אם בתבנית יש מאפייני תבנית zone, image ו-network, צריך להגדיר ערכים לכל המאפיינים האלה בהגדרה ברמה העליונה.
אם לחלק מהמאפיינים של התבנית יש ערכי ברירת מחדל, כדאי להשתמש בסכימות כדי להגדיר את ערכי ברירת המחדל האלה. אפשר להשמיט מאפיין של תבנית עם ערך ברירת מחדל מההגדרה ברמה העליונה, אם ערך ברירת המחדל מתאים לפריסה.
הגדרת ערכים למאפייני תבנית בשורת הפקודה
במקום לספק ערכים למאפייני התבנית בקובץ ההורה שמייבא את התבנית, Deployment Manager מאפשר להגדיר את הערכים האלה ישירות ב-Google Cloud CLI. אפשר לדלג על יצירת קובץ YAML ברמה העליונה. Deployment Manager ייצור באופן אוטומטי הגדרה ברמה העליונה לפריסה על סמך המידע שבבקשה.
לדוגמה, נניח שיש לכם את התבנית הבאה עם מאפיין תבנית שנקרא zone:
בעזרת Google Cloud CLI, אפשר להעביר את קובץ התבנית הזה ישירות ולספק את הערכים של מאפייני התבנית בשורת הפקודה. לדוגמה, הבקשה הבאה מעבירה את התבנית ומציינת את המאפיין zone ישירות בשורת הפקודה:
gcloud deployment-manager deployments create a-single-vm --template vm_template.jinja \
--properties zone:us-central1-a
חשוב לזכור:
כל הערכים מנותחים כערכי YAML. לדוגמה, הערך
version: 3מועבר כמספר שלם. אם רוצים לציין אותו כמחרוזת, צריך להוסיף גרשיים בודדים עם תו בריחה סביב הערך,version: \'3\'.ערכים בוליאניים לא תלויי-רישיות, ולכן המערכת מתייחסת ל-
TRUE, ל-trueול-Trueבאותו אופן.צריך להעביר את כל המאפיינים הנדרשים שמוגדרים בתבנית. אי אפשר לספק רק קבוצת משנה של הנכסים. אם למאפיינים מסוימים יש ערכי ברירת מחדל, אפשר להשמיט את המאפיין משורת הפקודה.
כדי לציין כמה מאפיינים, צריך לספק צמדים של מפתח:ערך שמופרדים בפסיקים. לא משנה באיזה סדר מציינים את הזוגות. לדוגמה:
gcloud deployment-manager deployments create my-igm \
--template vm_template.jinja \
--properties zone:us-central1-a,machineType:n1-standard-1,image:debian-9אחרי הרצת הפקודה הזו, Deployment Manager יוצר פריסה באמצעות התבנית שסיפקתם. אפשר לוודא שהפריסה נוצרה באמצעות מסוף Google Cloud או ה-CLI של gcloud. מידע על צפייה בפריסה מופיע במאמר צפייה במניפסט.
המאמרים הבאים
- מאכלסים מידע על הפרויקטים והפריסות באמצעות משתני סביבה.
- מוסיפים תבנית באופן קבוע לפרויקט כסוג מורכב.
- איך מארחים תבניות חיצוניות כדי לשתף אותן עם אחרים