Terraform State Management

Terraform State Management



Infrastructure as Code הוא הליך של ניהול ואספקת תשתית ה-IT באמצעות קוד המסייע להתגבר על המורכבות של אספקה ​​בקנה מידה גדול וניהול משאבי ה-IT באופן ידני וחוזר. Terraform מאת HashiCorp הוא כלי IaC בקוד פתוח המשתמש במערכת ניהול מצב כדי לעקוב אחר שינויים ולנהל את קבצי המצב. מערכת ניהול המדינה שלה היא אחת מתכונות המפתח שלה ועוזרת לעקוב אחר שינויים בתשתית בצורה יעילה. מאמר זה צולל כיצד פועלת ניהול המדינה של Terraform וכיצד להשתמש בו ביעילות.

מדינת טרהפורם

המצב הנוכחי של התשתית שלנו, הכולל מידע על המשאבים שאנו מגדירים בקוד שלנו, נרשם כמצב Terraform. Terraform משתמש במצב זה כדי לקבוע את השינויים הנדרשים כדי להביא את התשתית שלנו למצב הרצוי כאשר מופעלת פקודה כמו Terraform 'apply'. לאחר ביצוע השינויים (צור, שנה ומחק), Terraform מעדכן את קובץ המצב עם המצב החדש של התשתית שלך.

כדי להבין בבירור את הרעיון, ניקח דוגמה:







מַשׁאָב 'קובץ_מקומי' 'ג'ון' {

שם הקובץ = '/home/John.txt'

תוכן = 'אני אוהב חיות מחמד'

}

כאן, אנו יוצרים קובץ Terraform בשם 'main.tf'. בתוכו יש משאב מסוג local_file בשם 'John' עם שתי תכונות: שם קובץ ותוכן.



סוג המשאב local_file משמש ליצירת קובץ במערכת הקבצים המקומית של המחשב שבו Terraform פועל. במקרה זה, הקובץ נוצר עם השם 'John.txt' בספריית '/home', ותוכן הקובץ הוא 'אני אוהב חיות מחמד'.



כעת, בואו נבצע את זרימת ה- Terraform - Terraform תתכננו, ותחילו. כאשר אנו מבצעים את פקודת Terraform 'apply' בפרויקט שלנו בפעם הראשונה, Terraform יוצר אוטומטית את קובץ המצב שנקרא 'terraform.tfstate' בספריית השורש של פרויקט Terraform שלנו. הוא כולל את כל המידע על המצב הנוכחי של התשתית שלנו בפורמט JSON.





להלן קובץ המצב עבור המשאב שיצרנו:



כעת, נניח שאנו רוצים להסיר את המשאב הנוכחי וליצור משאב נוסף מסוג random_pet בשם 'my-pet' עם תכונות - קידומת, אורך ומפריד.

מַשׁאָב 'חיית מחמד_אקראית' 'חיית המחמד שלי' {

קידומת = 'אדון'

אורך = '1'

מפריד = '.'

}

כאן, אנו מסירים את המשאב local_file ומוסיפים משאב random_pet. המצב הרצוי שלנו הוא שיהיה רק ​​המשאב Random_pet. בואו נבצע את ה- Terraform init, נתכנן ונחיל פקודות.

כפי שמוצג באיור הקודם, כאשר אנו מבצעים את הפקודה 'תוכנית' של Terraform, היא מציגה את הפעולות ש-Terraform נוקטת כדי להגיע למצב הרצוי. כאשר אנו מפעילים את הפקודה 'החל' של Terraform, המשאב 'חיית המחמד שלי' נוצר, ומשאב ה'ג'ון' מוסר. כמו כן, קובץ המצב מתעדכן על ידי השמדת המטא נתונים של המשאב local_file והוספת המטא נתונים של משאב random_pet.

להלן התוכן של קובץ המצב המעודכן:

כיצד פועלת Terraform the Manage State?

באמצעות קצה אחורי, Terraform מנהל את המדינה. קצה אחורי הוא שירות מרוחק או מערכת קבצים מקומית שבה Terraform משתמשת כדי לאחסן ולאחזר את נתוני המצב. בהתאם לדרישות שלנו, אנו יכולים לבחור backend מתאים.

Terraform תומכת בכמה מערכות אחוריות מובנות כולל מקומיות, Amazon S3, HashiCorp Consul, Vault ו-Azure Storage. אנחנו יכולים גם ליצור backend מותאם אישית אם אף אחת מהאפשרויות המובנות לא עונה על הצרכים.

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

חשיבות ניהול המדינה

ניהול המדינה בכלים כמו Terraform חיוני בשל נקודות המפתח הבאות:

קבע את המצב הנוכחי של התשתית שלך

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

עקוב אחר שינויים בתשתית לאורך זמן

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

אוטומציה

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

ניהול תלות

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

התאוששות מאסון

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

שיטות עבודה מומלצות לניהול מדינה אפקטיבי

הנה כמה טיפים שנוכל לבצע כדי לנהל את המדינות בצורה יעילה:

השתמש בקצה אחורי מרוחק

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

הפעל גירסאות

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

השתמש במנגנון נעילה

אנו יכולים להשתמש במנגנון נעילה שעוזר למנוע התנגשויות כאשר מספר משתמשים עובדים על אותה תשתית. Terraform תומך במספר כלי נעילה כולל DynamoDB, Consul ו-S3.

גבה את קובץ המדינה שלך

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

סיכום

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