פתרון בעיות ב-gcloud beta terraform vet

למה הפרה מסוימת לא מקפיצה הודעת שגיאה כמו שאמור לקרות?

אם בדקתם את הלוגיקה של התיקוף ומצאתם שהאילוץ לא מקפיץ הודעת שגיאה כמו שאמור לקרות, תוכלו לבדוק את הדברים הבאים:

  • האם ספריית המדיניות מוגדרת נכון? ודאו שספריית המדיניות מכילה את הספרייה policies/constraints, שמכילה את האילוץ שאמור לגרום להפרה.
  • האם יש תמיכה במשאב של Terraform שמכיל את ההפרה? אפשר לבדוק הפרות באמצעות gcloud beta terraform vet רק למשאבים שיש תמיכה בגרסה שלהם. נסו להריץ מחדש את הפקודה עם --verbosity=debug וחפשו את ההודעה: unsupported resource: google_resource_name. תוכלו גם לבדוק אם המשאב נמצא ברשימת המשאבים הנתמכים.
  • האם האילוץ מיועד למשאב הנכון של Terraform?

    1. בדקו את השדה kind באילוץ. הוא אמור להיראות כך: GCPAppengineLocationConstraintV1
    2. חפשו בספרייה policies/templates מדיניות שיש לה אותו ערך עבור spec.crd.spec.names.kind
    3. בשדה rego חפשו משהו שנראה כך: asset.asset_type == "appengine.googleapis.com/Application". זהו סוג הנכס ב-CAI שאליו מיועד האילוץ.
    4. ודאו שסוג הנכס ב-CAI נמצא ברשימת המשאבים הנתמכים.

למה מופיעה הודעת שגיאה על כך שלא הוגדר פרויקט?

כדי ליצור שם נכס מדויק ב-CAI נעשה שימוש במאגר של ישויות אב למשאבים. אם ל-gcloud beta terraform vet אין אפשרות לקבוע אוטומטית מה ישות האב של הנכס ב-CAI, מופיעה הודעת השגיאה הבאה: project: required field is not set. תוכלו לציין פרויקט ברירת מחדל עם הדגל --project, או להגדיר פרויקט באמצעות gcloud config.

למה מופיעה הודעת השגיאה getting resource ancestry for project PROJECT_ID: googleapi: Error 403: The caller does not have permission, forbidden?

נסו להריץ את הפקודה עם --verbosity=debug וחפשו את ההודעה: Terraform is using this identity:. בסוף ההודעה אמורה להופיע כתובת האימייל של החשבון שמשמש לבקשות API.