ניהול קובץ המצב של Terraform

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

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

ההוראות בדף הזה מבוססות על ההנחה שאתם מכירים את Terraform.

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

  1. חשוב לוודא שיש לכם את ההרשאות הנדרשות לעבודה עם קובץ המצב. התפקיד config.admin כולל את ההרשאות הנדרשות. ההרשאות הספציפיות שנדרשות הן:

    • config.deployments.lock
    • config.revisions.getState
    • config.deployments.updateState
    • config.deployments.unlock
    • config.deployments.getLock
    • config.deployments.getState
  2. מוודאים שיש לכם עותק מקומי של התצורה של Terraform. זוהי התצורה שמתאימה לקובץ המצב שאתם עובדים איתו.

    העותק המקומי של התצורה מאפשר לכם להריץ פקודות כמו terraform refresh או terraform plan באופן מקומי בזמן שאתם משנים את קובץ המצב.

  3. מתקינים את Terraform כדי להשתמש ב-Terraform CLI במחשב המקומי.

שינוי או בדיקה של קובץ המצב

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

אחרי שמשנים את קובץ המצב, מעלים אותו ל-Infra Manager כדי להשתמש בו בפריסה.

נעילת הפריסה

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

    gcloud infra-manager deployments lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
    

    מחליפים את:

    • DEPLOYMENT_ID עם מזהה הפריסה.
    • PROJECT_ID בפרויקט שבו הפריסה פועלת.
    • LOCATION עם המיקום שבו הפריסה פועלת.

    הפלט של הפקודה הזו מכיל lock ID שמשמש להעלאה ולביטול הנעילה של קובץ המצב.

  2. כדי לאחזר את מזהה הנעילה בכל שלב, משתמשים בפקודה:

    gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
    

הורדת קובץ המצב

כדי להוריד את קובץ המצב, משתמשים בכתובת URL חתומה של Cloud Storage:

SIGNED_STATE_DOWNLOAD_URL=$(gcloud infra-manager deployments export-statefile DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(signedUri)")

curl -s -X GET --output terraform.tfstate ${SIGNED_STATE_DOWNLOAD_URL}

שינוי קובץ המצב באופן מקומי

  1. מוודאים שההגדרה (קבצי *.tf) נמצאת באותה ספרייה כמו קובץ המצב שהורד (terraform.tfstate).

  2. מאתחלים את Terraform:

    terraform init
    
  3. אם כבר אתחלתם את Terraform, יכול להיות שתצטרכו לאתחל עם הדגל reconfigure:

    terraform init -reconfigure
    
  4. עובדים עם קובץ המצב לפי הצורך. לדוגמה, אפשר לבצע פעולות של בדיקת מצב או שינוי. מידע נוסף על עבודה עם קובץ המצב זמין במאמר שינוי מצב של Terraform.

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

העלאת קובץ המצב

משתמשים בכתובת URL חתומה של Cloud Storage כדי להעלות את קובץ המצב:

  1. מוצאים את מזהה הנעילה:

    LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
    
  2. מקבלים את כתובת ה-URL להעלאה:

    SIGNED_STATE_UPLOAD_URL=$(gcloud infra-manager deployments import-statefile DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID} --format="get(signedUri)")
    
    curl -s -X PUT --upload-file terraform.tfstate ${SIGNED_STATE_UPLOAD_URL}
    

ביטול הנעילה של הפריסה

  1. מוצאים את מזהה הנעילה:

    LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
    
  2. ביטול הנעילה של הפריסה:

    gcloud infra-manager deployments unlock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID}
    

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