אחסון תבניות במארח חיצוני

במאמר הזה מוסבר איך להשתמש בתבניות חיצוניות בפריסה, שמתארחות איפשהו באינטרנט ולא במחשב המקומי.

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

  • שיתוף תבניות עם אחרים בקלות
  • איך מוודאים שההגדרות תמיד מבוססות על התבנית העדכנית ביותר
  • ניהול אוטומטי של ייבוא וסכימות רלוונטיים

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

דוגמה

ההגדרה הזו מייבאת תבנית חיצונית:

resources:
- name: my-frontend
  type: gs://my-frontend-templates/webserver-frontend.jinja

לפני שמתחילים

  • אם רוצים להשתמש בדוגמאות לשורת הפקודה במדריך הזה, צריך להתקין את כלי שורת הפקודה`gcloud`.
  • כדי להשתמש בדוגמאות ל-API במדריך הזה, צריך להגדיר גישה ל-API.
  • קוראים את התיעוד בנושא הגדרה.
  • קוראים את התיעוד בנושא תבניות.

אירוח תבניות חיצוניות

אפשר לארח תבניות חיצוניות ב-Google Cloud Storage או במיקום שנגיש לציבור, כמו GitHub. כל עוד יש כתובת URL לקובץ ויש לכם גישה לתבניות, Deployment Manager יוכל להוריד אותו. אם הקובץ משתמש בסכימה כדי לייבא תבניות אחרות, צריך גם לארח את התבניות האלה באותה כתובת URL בסיסית.

ב-Google Cloud Storage

כדי לארח תבניות ב-Google Cloud Storage:

  1. יוצרים מאגר לתבניות או משתמשים במאגר קיים.
  2. מעלים את התבניות ואת קובצי התבניות שקשורים אליהן, כמו סכימות, לקטגוריה.
  3. אם אתם מתכננים להשתמש בתבניות מפרויקט אחר ב-Google Cloud Platform, ולא מהפרויקט שאליו התבניות שייכות, אתם צריכים להגדיר בקרת גישה כדי לאפשר את הגישה הזו.

אירוח תבניות ב-Google Cloud Storage מאפשר לכם לקבוע למי תהיה גישה לתבניות, כי אתם יכולים להגדיר אפשרויות של בקרת גישה בקטגוריה של Cloud Storage המתאימה או בתבנית הספציפית.

לעומת זאת, אם מארחים את התבניות בכתובות URL אחרות שנגישות לכולם, צריך לוודא שהתבניות זמינות לכולם.

בכתובת URL שנגישה לכולם

אפשר גם לארח תבניות חיצוניות מחוץ ל-Google Cloud Storage, בתנאי שהתבניות נגישות לכולם. לדוגמה, אפשר לארח תבניות ב-GitHub ולהפנות לתבניות באמצעות כתובת ה-URL של GitHub.

ב-GitHub, צריך לספק את כתובת ה-URL הגולמית של GitHub כדי שמנהל הפריסה יקבל את התבנית ולא את דף ה-HTML של GitHub. לדוגמה, כתובת URL גולמית נראית כך:

https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/jinja/vm_template.jinja

קריאה לתבנית חיצונית

אפשר לקרוא לתבנית חיצונית כמו לתבנית מקומית, אבל צריך לספק את כתובת ה-URL המלאה של קובץ התבנית כסוג. לדוגמה:

resources:
- name: my-salt-cluster
  type: gs://v2/saltstack/salt_cluster.jinja

לכתובת URL של GitHub:

resources:
- name: my-salt-cluster
  type: https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/vm_template.jinja

אם תבנית חיצונית מייבאת תבניות אחרות או אם יש סכימה נלווית, אפשר לאחסן את הקבצים הקשורים באותה ספרייה או בספריית משנה יחסית ולכלול את התבניות האחרות האלה באמצעות כתובת URL יחסית. ‫Deployment Manager יחפש את התבניות האחרות האלה באמצעות הנתיב היחסי על סמך כתובת ה-URL הבסיסית.

לדוגמה, אם ההגדרה שלכם נראית כך:

resources:
- name: my-salt-cluster
  type: gs://v2/saltstack/salt_cluster.jinja

היה קובץ סכימה בשם salt_cluster.jinja.schema שייבא את הקבצים הבאים:

imports:
- path: minion.py
- path: master.py
- path: examples/source/example.py

מערכת Deployment Manager תוריד ותייבא אוטומטית את כל הקבצים הדרושים לתבנית.