הגדרת תצורת שרתים עם Chef Infra: אוטומציה וציות

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

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

תשתית Chef: היכן נשברת אוטומציית התצורה

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

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

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

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

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

מה משתנה לאחר המעבר לתצורות מנוהלות

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

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

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

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

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

מצבי עבודה של שרת הניהול: השוואת גישות

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

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

השוואת אפשרויות ניהול

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

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

תשתית Chef: שלבי יישום מביקורת ועד מסירה

יישום Chef Infra מתחיל לא במתכונים, אלא בספירת מלאי של מה שכבר פועל בצי. סדר השלבים מהותי: רישום שהוחמץ מוביל לכך שהמצב המתואר שונה מהמצב בפועל, וההרצה הראשונה על צמתי הייצור חושפת זאת.

  1. ספירת מלאי של שרתים. אוספים רשימת צמתים, גרסאות מערכת הפעלה, חבילות מותקנות, שירותים, פורטים פתוחים ועקבות של עריכות ידניות. בפלט — סיכום שמראה כמה תצורות ייחודיות יהיה צורך לתאר.
  2. סכימת ניהול. בוחרים טופולוגיה: שרת מרכזי עם מאגר מתכונים או הרצה אוטונומית על כל צומת. כאן גם מגדירים הרשאות גישה, סביבות ומאגרי מאפיינים.
  3. תיאור מתכונים ותפקידים. אבני הבניין הטיפוסיות של התצורה נאספות למודולים, קבוצות שרתים מתוארות בתפקידים, והבדלים בין סביבות מוצאים למאפיינים — אותו קוד משרת גם את סביבת הבדיקות וגם את סביבת הייצור לפי חישוב אישיהרצה על סביבת בדיקות. הסביבה משחזרת את טופולוגיית הייצור, ולכן התנגשויות בגרסאות חבילות, סדר הפעלת השירותים ושגיאות בתבניות צפות לפני הפרודקשן, ולא אחריו.
  4. בדיקת אידמפוטנטיות. הרצה חוזרת לא אמורה לשנות דבר: בדוח נשארים אפסים במשאבים שהשתנו. כל פער פירושו שמצב הצומת תואר באופן חלקי.
  5. העברת התמיכה. מאגר עם היסטוריית שינויים, הנחיות לפעולות טיפוסיות, הדרכת משמרת התורנים ונוהל עריכות דרך סקירה.

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

מה מועבר ללקוח: תפקידים, נהלים וארטיפקטים

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

מה כלול במסירה

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

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

מקרה בוחן: הסרנו פערי הגדרות בין סביבות

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

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

בגלל הפערים הגיעו 6–8 תקריות ברבעון, וכל אחת גררה אחריה שרשרת אבחון: קודם חיפשו את הבעיה בקוד, אחר כך מצאו את ההבדל בהגדרות.

תיאור מצב השרתים הועבר לקוד ב-Chef Infra: מתכונים משותפים לכל המתארים, תפקידים לצמתים טיפוסיים, והבדלים בין סביבות — כשכבה נפרדת של נתונים, ולא כעריכות על מכונות חיות.

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

התוצאה: 3–4 פעולות בשבוע במקום ארבעים, עמדה עולה תוך 20–25 דקות בהרצה אחת ואינה תלויה במבצע. מספר התקריות בגלל פערים ירד לאחת-שתיים ברבעון. החזרתיות מאושרת בדוח: סטי הפרמטרים בכל ארבעת המתארים תואמים, והפערים נראים לפני ההעלאה, ולא אחריה. חזרה למצב הקודם — אותה פעולה, רק עם סט הנתונים הקודם.

במה ניהול תצורות שונה מתזמור?

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

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

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

לכן ניהול תצורות חי בפני עצמו: הוא מביא צמתים לצורה המתוארת ועושה זאת בלי מתזמר. כלים כמו Chef מכסים בדיוק את החלק הזה — הבאה לתבנית ייחוס ובדיקת התאמה.

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

ספקות טכניים נפוצים לפני תחילת העבודה

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

אצלנו השרתים הוגדרו ידנית — יהיה צורך לשנות אותם?

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

כיצד לבדוק שינויים לפני הפרודקשן?

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

אפשר לכסות רק חלק מהצי?

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

כיצד נפתרות סוגיות של הרשאות גישה וסודות?

הסוכן פועל תחת חשבון שירות עם ההרשאות המינימליות הנדרשות, ומפתחות הצמתים מונפקים ומבוטלים על ידי Chef Infra Server. סודות אינם נמצאים במאגר — הם מועברים כמאפיינים מוצפנים או ממאגר חיצוני. כל הרצה משאירה דוח: מה ובאיזה צומת השתנה.

נדון במשימה ונחזור עם הערכה ותוכנית

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

כדי לא לנחש, נדרש סט מינימלי של נתונים להתחלה:

  • רשימת שרתים וסביבות (פיתוח, בדיקות, פרודקשן) ומה שמנהל אותם כעת;
  • הרשאות גישה למאגר התצורות או ייצוא של סקריפטי ההגדרה הנוכחיים;
  • תיאור תפקידים: אילו שירותים, תלויות וחבילות מותקנים על כל צומת;
  • דרישות התאמה — נהלים פנימיים, תקנים ענפיים, מה בודקת בקרת האיכות;
  • כיצד בנוי סדר העבודה: מי מאשר שינויים, כיצד מתבצעת הבדיקה לפני הפרודקשן, כיצד מתבצעת חזרה לאחור;
  • איש קשר של המהנדס האחראי על התשתית — הוא יאשר את הפרטים.

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

תארו את המשימה בצורה חופשית — נדון בה ונחזור עם הערכה ותוכנית עבודה.