כשמגדירים את המאפיינים של התבניות או ההגדרות, אפשר להשתמש בהפניות למאפיינים של משאבים אחרים במקום לספק ערכים ישירות. לדוגמה, אם רוצים ליצור מנהל קבוצת מופעים שמשתמש בתבנית של הגדרות מכונה מאותו פריסה, במקום להקליד במפורש את הקישור המלא לתבנית של הגדרות המכונה, אפשר להשתמש בהפניה עם התחביר $(ref.instance-template.selfLink).
בעזרת הפניות אתם יכולים:
גישה למאפיינים שלא מוגדרים עד ליצירת המשאב. לדוגמה, כשמגדירים מכונה וירטואלית בהגדרה, עדיין לא יודעים את כתובת ה-IP שלה. עם זאת, עדיין אפשר להשתמש בהפניה לכתובת ה-IP. כשפורסים את ההגדרה, המכונה הווירטואלית נוצרת קודם, ו-Deployment Manager מקבל את כתובת ה-IP החיצונית כשהיא זמינה.
כך יהיה קל יותר לקרוא את ההגדרות או התבניות ולפתור בעיות. לדוגמה, אם אתם צריכים להגדיר כמה כללי העברה, אתם צריכים גם לציין רשת לשימוש. במקום לספק קישור לרשת לכל כלל העברה, אפשר ליצור הפניה למאפיין
selfLinkשל הרשת באמצעות התחביר הבא:$(ref.network-name.selfLink)אם אתם צריכים לפתור בעיות בהגדרה, ההפניה מקלה על זיהוי הרשת שבה נעשה שימוש בכלל ההעברה.
כשיוצרים הפניה למשאב, נוצרת גם תלות בין המשאבים. לדוגמה, בקטע הקוד הבא, sandbox-vm משתמש בהפניה ל-network-a:
resources:
- name: sandbox-vm
type: compute.v1.instance
properties:
network: $(ref.network-a.selfLink)
...
...
- name: network-a
type: compute.v1.network
properties:
...
כשפורסים את ההגדרה הזו, Deployment Manager יוצר את network-a לפני sandbox-vm, כדי שאפשר יהיה לפתור את ההפניה. אם אחת מההפניות לא מתורגמת לכתובת, הפריסה נכשלת.
אפשר להשתמש בהפניות גם בהגדרות וגם בתבניות.
לפני שמתחילים
- אם רוצים להשתמש בדוגמאות לשורת הפקודה במדריך הזה, צריך להתקין את כלי שורת הפקודה`gcloud`.
- כדי להשתמש בדוגמאות ל-API במדריך הזה, צריך להגדיר גישה ל-API.
- חשוב להכיר את יצירת ההגדרה.
- להכיר את היצירה של תבנית בסיסית.
יצירת הפניות בקובצי תצורה
מצהירים על הפניות בהגדרה באמצעות הפורמט הבא:
$(ref.RESOURCE_NAME.PROPERTY)
בדוגמה הבאה נוצרת רשת, ואז נוצרים שני מופעים שמשתמשים בהפניות לרשת החדשה שנוצרה. בדוגמה הזו, ההפניה היא:
$(ref.a-new-network.selfLink)
כשפורסים את ההגדרה הזו, הרשת נוצרת לפני שני המקרים, וההפניה נפתרת ל-selfLink של משאב הרשת.
יצירת הפניות בתבניות
בקובצי תבניות, לפני ההפניה כולה צריך להוסיף $, ואז להוסיף אותה בין סוגריים:
$(ref.RESOURCE_NAME.PROPERTY)
אפשר לשלב הפניות עם תכונות אחרות כמו מאפייני תבנית ומשתני סביבה. כדי לוודא ש-Deployment Manager מנתח את ההפניה בצורה נכונה, חשוב לזכור להשאיר את כל מחרוזת ההפניה בתוך הסוגריים.
אלה כמה דוגמאות להצהרה על הפניות בתבניות:
Jinja
הפניה שכוללת משתנה סביבה
network: $(ref.{{ env["deployment"] }}-network.selfLink)הפניה לערך במערך
subnetwork: $(ref.{{ env["deployment"] }}-vm.networkInterfaces[2].subnetwork)הפניה שכוללת מאפיין של תבנית
network: $(ref.{{ properties["network"] }}.selfLink)הפניה באמצעות פרמטר Jinja
network: $(ref.{{ NETWORK_NAME }}.selfLink)הפניה בפלטים
outputs: - name: UrlToService value: http://$(ref.{{ env["deployment"] }}-network.networkInterfaces[0].accessConfigs[0].natIp):8080/
Python
הפניה שכוללת משתנה סביבה
'network': '$(ref.' + context.env['deployment'] + '-network.selfLink)'הפניה לערך במערך
'subnetwork': '$(ref.' + context.env['deployment'] + '-vm.networkInterfaces[2].subnetwork)'הפניה שכוללת מאפיין של תבנית
'network': '$(ref.' + context.properties['network'] + '.selfLink)'הפניה באמצעות פרמטר Python
'value': '$(ref.' + base_name + '.networkInterfaces[0].networkIP)'הפניה בפלטים
outputs = [{'name': 'UrlToService', 'value': '$(ref.' + context.env['deployment'] + '-network.networkInterfaces[0].accessConfigs[0].natIP):8080'}]
המאמרים הבאים
- כדאי לראות תצוגה מקדימה של ההגדרה לפני שמתחייבים לפרוס אותה.
- יצירת פריסה.
- מידע נוסף על תבניות