הפניה לתחביר

בדף הזה מתואר התחביר שבו משתמשים ב-Deployment Manager. המדריך הזה יכול לשמש כהפניה לסינטקס שבו צריך להשתמש בתצורות ובתבניות.

תחביר להגדרות ולתבניות

תחביר בסיסי

  • resources – קבוצת משאבים ליצירה.
    • name – השם של המופע הזה של המשאב.
    • type – סוג המשאב. זה יכול להיות סוג בסיסי כמו compute.v1.instance, ספק סוג כמו gcp-types/compute-v1:addresses או תבנית מיובאת. רשימת ספקי הסוגים הנתמכים
    • properties – המאפיינים של מקור המידע הזה. מידע כללי זמין במאמר מאפייני תבניות.
    • metadata – הגדרה נוספת של המשאב. רשימת השדות מופיעה בקטע מטא-נתונים.

דוגמה

resources:
- name: vm-instance
  type: compute.v1.instance
  properties:
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    ...

בקרת גישה

כדי להגדיר מדיניות IAM למשאבים, משתמשים בקטע accessControl:

  1. מוסיפים את הקטע accessControl להגדרות ברמה העליונה של כל משאב שרוצים להחיל עליו מדיניות של בקרת גישה.

  2. מציינים את gcpIamPolicy הרצוי למשאב. כל מדיניות IAM יכולה להכיל רשימה של קישורים. כל קישור מגדיר קשר בין רשימה של חשבונות משתמשים לתפקיד.

מידע מפורט על שליטה בגישה למשאבים זמין במאמר בנושא הגדרת בקרת גישה בהגדרה.

לדוגמה, בקטע accessControl הבא נוספים קישורים שמעניקים את התפקידים האלה למשתמשים:

משתמש תפקיד
alice@example.com roles/pubsub.editor
  • my-other-app@appspot.gserviceaccount.com
  • jane@example.com
roles/pubsub.publisher
resources:
- name: a-new-pubsub-topic
  type: pubsub.v1.topic
  properties:
    ...

  accessControl:
    gcpIamPolicy:
      bindings:
      - role: roles/pubsub.editor
        members:
        - "user:alice@example.com"
      - role: roles/pubsub.publisher
        members:
        - "user:jane@example.com"
        - "serviceAccount:my-other-app@appspot.gserviceaccount.com"

קובצי עזר

מידע על המקרים שבהם כדאי להשתמש בקובצי עזר ודוגמאות נוספות זמין במאמר בנושא יצירת קובצי עזר.

אפשר להשתמש בהפניות למאפיינים של משאבים אחרים במקום לספק ערכים ישירות. לדוגמה, אם רוצים ליצור מנהל של קבוצת מופעים שמשתמש בתבנית של הגדרות מכונה מאותו פריסה, במקום להקליד במפורש את הקישור המלא לתבנית של הגדרות המכונה, אפשר להשתמש בהפניה עם התחביר $(ref.instance-template.selfLink).

כדי לראות אילו מאפיינים אפשר ליצור הפניות אליהם, צריך לעיין ב-method ‏ get של ה-API של המשאב. לדוגמה, כדי לראות רשימה של כל המאפיינים של מכונה וירטואלית, אפשר לעיין בתגובה של השיטה instances.get().

מצהירים על הפניות באמצעות תחביר דומה לסימון הנקודה של JSONPath. כדי להצהיר על הפניה, משתמשים בתחביר הבא:

$(ref.RESOURCE_NAME.PATH_TO_PROPERTY)

למאפיינים שהם רשימות, כמו ממשקי הרשת של מופעי Compute Engine, משתמשים בתחביר הבא:

$(ref.RESOURCE_NAME.LIST_PROPERTY[index].ITEM)

דוגמאות

$(ref.exampleInstance.networkInterfaces[0].natIp)
$(ref.exampleInstance.serviceAccounts[0].email)

משתני סביבה ספציפיים לפריסה

כשיוצרים פריסה, Deployment Manager יוצר משתני סביבה שמכילים חלקי מידע על הפריסה, כמו שם הפרויקט הנוכחי, שם הפריסה וכו'.

רשימה מלאה של משתני הסביבה הזמינים מופיעה במאמר משתני סביבה.

כדי להשתמש במשתנה סביבה:

{{ env["deployment"] }} # Jinja

context.env["deployment"] # Python

דוגמה

- type: compute.v1.instance
  name: vm-{{ env["deployment"] }}

מאפייני התבנית

נכס תבנית הוא נכס שאתם יוצרים. במקום להגדיר ערך באופן קשיח, אפשר להצהיר על מאפיין של תבנית ולהגדיר את הערך של המאפיין בהגדרה ברמה העליונה, במקום לספק את המאפיין והערך באופן סטטי ישירות בתבנית. כדי ליצור נכס תבנית, משתמשים בתחביר:

{{ properties["property-name"] }} # Jinja

context.properties["property-name"] # Python

לאחר מכן, בהגדרה ברמה העליונה או בתבנית האב, מגדירים את הערך של המאפיין:

imports:
- path: vm_template.jinja

resources:
- name: my-vm
  type: vm_template.jinja
  properties:
   property-name: example-value

מידע נוסף על נכסי תבניות

פלט

בקטע הפלט, אפשר להגדיר צמדים שרירותיים של מפתח/ערך שחושפים מידע מסוים על הפריסה. אתם מספקים את המפתח ומגדירים את הערך כמחרוזת סטטית, כהפניה למאפיין, כמשתנה תבנית או כמשתנה סביבה.

  • outputs – הצהרה על רשימה של פלטים שהמשתמשים יכולים לקרוא להם במאפייני המשאבים שלהם.
    • name – השם של מאפיין הפלט.
    • value – ערך מאפיין הפלט.

דוגמה

resources:
- name: vm-instance
  type: compute.v1.instance
  ...

outputs:
- name: databaseIp
  value: $(ref.vm-instance.networkInterfaces[0].natIp)
- name: databaseName
  value: example-database

מידע נוסף על פלט

מטא-נתונים

הקטע metadata מכיל מטא-נתונים מיוחדים שאפשר להחיל על כל משאב בנפרד. ל-Deployment Manager יש מטא-נתונים ייחודיים שמפעילים תכונות מסוימות. לדוגמה, התכונה dependsOn מסתמכת על רשומת מטא-נתונים.

תלוי ב

המאפיין dependsOn יוצר יחסי תלות מפורשים בין המשאבים. לדוגמה, אם מציינים שמשאב א' תלוי במשאב ב', מוודאים שמשאב ב' תמיד נוצר לפני משאב א'.

metadata: the metadata for this resource
  dependsOn: Any explicit dependencies to another resource.

דוגמה

resources:
- name: vm-instance
  type: compute.v1.instance
  properties:
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    ...
  metadata:
    dependsOn:
    - persistent-disk-1
    - a-new-network-1

מידע נוסף על יצירת יחסי תלות מפורשים

תחביר לסכימות

סכימה היא דרך לקבוע איך המשתמשים יכולים ליצור אינטראקציה עם התבניות. אפשר להשתמש בתחביר הבא בקובץ הסכימה. מידע נוסף על סכימות

מידע

המאפיין info מכיל מטא-מידע על הסכימה. המידע הזה כולל פרטים כמו שם, מספר גרסה, תיאור וכו'.

צריך לציין לפחות שם ותיאור במאפיין הזה.

דוגמה

info:
  title: MongoDB Template
  author: Jane
  description: Creates a MongoDB cluster
  version: 1.0

ייבוא

השדה imports מכיל רשימה של קבצים תואמים שנדרשים לתבניות שמשתמשות בסכימה הזו. כשמעלים תבנית עם סכימה שיש בה רשימה של ייבוא, Deployment Manager בודק שכל הקבצים במאפיין imports הועלו יחד עם התבנית.

דוגמה

imports:
  - path: helper.py
    name: mongodb_helper.py

נדרש

שדה החובה מכיל רשימה של רכיבים משדה המאפיינים שנדרשים בתבנית שמשתמשת בסכימה. כל הרכיבים שלא צוינו בשדה החובה הזה נחשבים אופציונליים.

דוגמה

required:
  - name

properties:
  name:
    type: string
    description: Name of your Mongo Cluster

  size:
    type: integer
    default: 2
    description: Number of Mongo Secondaries

נכסים

השדה properties מכיל את כללי סכימת ה-JSON של המסמך הזה. משתמשים בתבנית יכולים להגדיר את הרכיבים שמתוארים בשדה המאפיינים. אפשר להשתמש בכל האימותים הנתמכים של סכימת JSON עבור המאפיינים האלה, כמו:

  • type (מחרוזת, ערך בוליאני, מספר שלם, מספר וכו')
  • default
  • minimum / exclusiveMinimum / maximum / exclusiveMaximum
  • minLength / maxLength
  • pattern
  • not X / allOf X, Y / anyOf X, Y / oneOf X, Y

לכל הפחות, מומלץ לכלול סוג ותיאור של השדה כדי שהמשתמשים ידעו מהו ערך קביל למאפיין. במאפיינים אופציונליים, מומלץ גם לציין ערך ברירת מחדל.

רשימה של מילות מפתח לאימות מופיעה במסמכי התיעוד בנושא אימות סכימת JSON.

דוגמה

properties:
  name:
    type: string
    description: Name of your Mongo Cluster

  size:
    type: integer
    default: 2
    description: Number of Mongo Secondaries
    minimum: 1

המאמרים הבאים