בדף הזה מתואר התחביר שבו משתמשים ב-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:
מוסיפים את הקטע
accessControlלהגדרות ברמה העליונה של כל משאב שרוצים להחיל עליו מדיניות של בקרת גישה.מציינים את
gcpIamPolicyהרצוי למשאב. כל מדיניות IAM יכולה להכיל רשימה של קישורים. כל קישור מגדיר קשר בין רשימה של חשבונות משתמשים לתפקיד.
מידע מפורט על שליטה בגישה למשאבים זמין במאמר בנושא הגדרת בקרת גישה בהגדרה.
לדוגמה, בקטע accessControl הבא נוספים קישורים שמעניקים את התפקידים האלה למשתמשים:
| משתמש | תפקיד |
|---|---|
alice@example.com |
roles/pubsub.editor |
|
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(מחרוזת, ערך בוליאני, מספר שלם, מספר וכו') defaultminimum / exclusiveMinimum / maximum / exclusiveMaximumminLength / maxLengthpatternnot 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
המאמרים הבאים
- מידע נוסף על קובצי עזר
- מידע נוסף על משתני סביבה
- מידע נוסף על מאפייני תבניות
- מידע על פלט
- מידע נוסף על סכימות