הטעות הגדולה של רד-האט

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

השינוי עצמו, אגב, אינו חל על גירסת ה-Upstream (מה שיהיה בעצם גירסת ה-RHEL החדשה בעתד), אך זה כמובן לא מסייע למי שיש מערכות RHEL או מבוססות חיקויי/fork של RHEL.

על מנת להבין מדוע השינוי הוא כה קריטי, צריך לזכור משהו אחד חשוב: רד-האט נחשבת הפצה יציבה ואיכותית, והיא משמשת אצל ארגונים רבים כ-Gold Standard (הרבה יותר מאשר כל הפצה אחרת, כולל אובונטו או סוזה). מכיוון ש-רד-האט שחררו את הקוד והשינויים המתמשכים לציבור, קמו להן מספר קהילות שהוציאו הפצות "תואמות RHEL" כמו Rocky Linux, AlmaLinux וכמובן – Oracle Linux שעמדו בתנאים של רד-האט (אפשר להשתמש בקוד, כל עוד השם Red Hat או לוגו או כל סימן רשום של רד-האט אינו נכלל) והן בנו את ההפצה מחדש, כאשר ישנה 100% תאימות בינארית ל-RHEL.

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

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

מה שאי אפשר להבין, מדוע הצעד ננקט בצורה כזו הזויה?

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

  • הכרזת העניין בצורה רשמית (ולא סיבובית/ספין) ופרסום מועד יותר מאוחר שבו ההחלטה תופעל. נניח – 6 חודשים.
  • הכנה ופרסום תוכנית שיווקית לארגונים שירצו לעבור להשתמש ב-RHEL באופן רשמי: מתן הנחות, פרסום הוראות הגירה, וכו' וכו'

כיום, רד-האט לא נוקטת אף אחד מהצעדים. החברה אמנם מציעה (ללא קשר להודעה) עד 16 רשיונות בחינם, אולם יש תנאי לכך: הרשיונות הם עבור מפתחים/פיתוח בלבד.

אז מה ניתן לעשות?

אם אתם משתמשים ב-Rocky Linux, העמותה מעדכנת כי כל הטלאים שרד-האט הוציאה, כלולים בהפצה, והעמותה תמשיך לשחרר עדכונים חופפים, באג-פר-באג. ב-AlmaLinux מודעים לעניין ובשלב זה הם לוקחים מהפצות תואמות RHEL אחרות (כנראה Rocky Linux) את הטלאים ומוסיפים למערכת העדכונים שלהם. לגבי אורקל לינוקס – החברה לא פרסמה בשלב זה שום עדכון בנושא (חיפשתי, לא מצאתי).

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

להתראות CentOS??

בימים האחרונים יצאה הודעה כי CentOS 8 תעבור שינויים משמעותיים ובכללם – ההפצה תחדל מלקבל עדכונים בסוף שנת 2021, ולא תהיה הפצת CentOS המקבילה ל-RHEL מבחינת גירסא וקוד. הדבר היחיד שישאר הוא CentOS Stream שזו גירסת CentOS טיפה יותר "מתקדמת" מ-RHEL (אבל מבחינת עדכוני אבטחה – ה-Stream יקבל את העדכונים רק לאחר ש-RHEL יקבל).

אין ספק שמי שנמצא בעולם הלינוקס וקרא את ההודעות, די הופתע מכך (שלא לדבר על חטיפת עצבים מטורפים). רוב חברי קבוצת CentOS SIG הם עובדי רד-האט ו-ראד האט עצמה משתמשת ברוב המערכות שלהם פנימית ב-CentOS וגם עובדים אלו לא ממש אהבו את ההחלטה הזו. גירסת ה-CentOS נתנה לרבים את התחושה של "להיות בלי, להרגיש עם" – לקבל הפצת לינוקס חינמית שהיא תואמת 100% הפצת RHEL אך מבלי לשלם (ומבלי לקבל תמיכה רשמית) וכולם הסתדרו לא רע עם הסידור הזה, כאשר חברות וארגונים רכשו RHEL לשרתי הפרודקשן והשאר – CentOS או הפצות לינוקס אחרות.

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

ראשית, אני יכול להבטיח שאין ל-IBM יד ורגל בנושא ובהחלטה. רד-האט היא עדיין חברה עצמאית שמחליטה לעצמה החלטות, כולל את ההחלטה הזו.

שנית – אני משער שאחת הסיבות העיקריות להחלטה הזו קשורה לכך שרד-האט מעוניינת בכמה שיותר פידבק מצד משתמשים ומפתחים לגבי עדכונים ותיקונים שהיא משחררת ל-RHEL, ומשתמשי CentOS בגירסה הרגילה לא יכולים לסייע הרבה אם הם מקבלים את התיקונים והעדכונים רק לאחר שהם מוזרמים ל-RHEL, ולכן אלו שיעבדו עם CentOS Stream יוכלו לתת פידבק על התיקונים שישוחררו לפני שהם נכנסים ל-RHEL (אך כפי שהזכרתי לעיל: זה לא יהיה רלוונטי לגבי תיקוני אבטחה עקב עניינים כמו אמברגו של תאריכי שחרור עדכונים וכו').

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

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

כל איש לינוקס ותיק ירגיש בוודאי תחושת דה-ז'ה וו בנושא. כבר היינו בעבר בסרט הזה. כשחברת רד-האט החליטה להוציא רק גרסאות לינוקס מסחריות בתשלום (מה שהיה RHEL, RHES), נוצרו מספר פרויקטים שלקחו את קוד המקור של RHEL וביצעו Fork לגירסה עם שם אחר אך עם תאימות מלאה (בעקרון, לא מדובר בתהליך של קימפול הכל מחדש באופן אוטומטי. יש לא מעט כלים לפתח, יש לא מעט סקריפטים לכתוב, להסיר קבצי לוגו וסימנים מסחריים של רד-האט וכו') כשה"זוכים" בפופולריות בסופו של דבר היו CentOS, Scientific Linux וכמובן Oracle שהחליטה פשוט לבנות את הכל בעצמה ולגנוב לקוחות מ-רד-האט.

אני מאמין שמה שיהיה הפעם – יהיה בדיוק כמו התהליך שהיה. דווקא כיום, יהיו יותר ויותר חברות שישמחו להשקיע בהשכרת מספר מהנדסים כדי לבנות גירסת RHEL חופשיה עם אופציה ללקוחות המעוניינים לרכוש תמיכה מסחרית, SLA וכו'. אחרי הכל, מדובר פה בשוק פוטנציאלי לא קטן של חברות וארגונים שיתחילו לחפש פתרונות חלופיים ל-CentOS 8 וגרסאות עתידיות. יהיו כמובן נסיונות של הפצות אחרות למשוך לקוחות פוטנציאליים (קנוניקל, סוזה וכו') אבל אני בספק אם זה יצליח.

לפיכך, להלן המלצותיי (לפי התיעוד הרשמי):

  • אם אתם משתמשים בגירסה כלשהי של CentOS 6 – שדרגו בדחיפות. ה-EOL שלה חל בחודש שעבר.
  • אם אתם משתמשים בגירסה כלשהי של CentOS 7 – אתם בטוחים, ואתם תמשיכו לקבל עדכונים לגירסה עד תאריך 30/6/2024. אם אינכם חייבים לעבור לגירסה 8, פשוט אל תעברו, במיוחד אם המכונות הן וירטואליות.
  • אם אתם משתמשים בגירסה כלשהיא של CentOS 8 – אתם תקבלו עדכונים עד סוף שנה הבאה (31/12/2021)
  • עכשיו, כל מה שנותר לעשות, זה להמתין ולראות מי "יקפוץ". האם רד-האט תחזור בה? (קהילות הלינוקס הן לא קהילות מנומסות, בלשון המעטה!) ואם לא, מי החברות שיכריזו על Fork ל-RHEL? (אמזון? מיקרוסופט? גוגל?) במשך השנה הקרובה אנחנו נראה את ההתפתחויות ואני מאמין שכבר בחודשים הקרובים נראה חדשות בנושא עם מפות דרכים והמלצות לאן להגר.

ולבינתיים, אני ממליץ לא לקחת המלצות פזיזות, אם אפשר.

כמה מילים על רד-האט 8 (BETA)

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

גירסת ה-Major האחרונה שרד-האט שחררה (גירסה 7.0) יצאה לשוק ב-9/6/2014 ולאחר מכן רד-האט שחררה עדכונים לגירסה זו וגרסאות קודמות, עדכונים שלא שברו תאימות בינארית כך שדברים לא השתנו, ובעולם האינטרנט – 4 שנים זה נצח.

כל חברה שחושבת לשדרג ל-רד-האט 8 (אנחנו כרגע רק בבטא, הגירסה הרשמית תשוחרר כנראה במחצית השניה של 2019), כדאי שתכין את עצמה לעבודה רצינית. גירסה 8 כלל אינה דומה לגירסה 7 וסביר להניח שאפליקציות רבות שרצו בצורה תקינה על גירסה 7 פשוט לא ירוצו על גירסה 8 מבלי לשנות הגדרות וקבצים שונים.

רד-האט 8 עושה קפיצת דרך בכל אספקט אפשרי. גירסת ה-Kernel עוברת מ-3.11 לגירסה 4.18 (אני מנחש שזה יעלה ל-4.19). הקומפיילר משתדרג מספר גירסאות קדימה, ולראשונה ניתן ב-RHEL להוסיף Repositories ולהחליף גירסאות של אותה אפליקציה מבלי לעשות פעמיים פליק פלאק לאחור. לחובבי פייתון – רד-האט נוטשת רשמית את גירסה 2.7 ועולה לגירסה 3.6 (התקנת ברירת המחדל, אגב, אינה כוללת שום גירסת פייתון ב-RHEL-8). תחום התקשורת בין קונטיינרים מקבל שיפור בדמות תמיכת IPVLANS והתווספו כלים נוספים חדשים לבניה וניהול קונטיינרים, ניהול שרתים בצורה מרוכזת עכשיו יותר קליל ומסודר עם Cockpit (אגב, אני לא ממליץ להשתמש בו ככלי ניטור). משתמשים בקבצי Image בענן או מקומית? רד-האט משתמשת בכלי ידוע – Composer לבניית אימג'ים.

רד-האט שינתה כמעט כל פונקציה ושדרגה את כל האפליקציות שקיימות בהפצה. רד-האט 8 היא בעצם Fedora 28 ש-רד-האט לקחו כבסיס ומשם הם החלו לשפר ולייצב את המערכת על מנת לעמוד בכל המבחנים שיצרני תוכנה וחומרה שונים עושים לפני שהם מאשרים את ההפצה כנתמכת וכיציבה.

מכיוון שזו גירסת בטא ראשונה ציבורית, גירסה זו, סביר להניח, לא תעבוד ולא תריץ כמעט אף פלטפורמה אחרת של רד האט, כולל OpenShift, RHV/oVirt, Cloud Formation, Foreman ואחרים. במהלך החודשים החודשים שאר הכלים והפלטפורמות (מחוץ ל-RHEL-8) יתעדכנו ויתמכו בהפצה החדשה בגירסת הבטא. אם אתם רוצים להתקין אותה ולנסות אותה, אל תשכחו להירשם לרד-האט ולבצע Subscription על ההתקנה כדי שתקבלו עדכונים (ויש כבר ערימה).

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

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

ולמעוניינים לשרוף זמן או ללמוד מה השינויים ב-RHEL-8 – להלן קובץ ה-PDF.

Red_Hat_Enterprise_Linux-8-beta-8.0_Beta_release_notes-en-US

תמיכת מוצר מול הסכם בנק שעות

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

אתן דוגמא: במקרים מסויימים מתקבלים פניות לגבי האם ניתן שרות ברמות 1-3. בד"כ כשמתקבל אימייל כזה, אני מרים גבה. אישית – אני לא מכיר מה זה רמות 1-3 מהסיבה הפשוטה שכשעסק או חברה פונים ל"חץ ביז" – הם מחפשים פתרון לבעיה XYZ. עדיין היום אף לקוח או לקוח פוטנציאלי לא שאל אותי על רמות 1-3. השאלה העיקרית שנשאלת היא האם אפשר לקבל פתרון מ"חץ ביז" או לא. אם מדובר בבעיה ש"חץ ביז" נותן לה פתרון – אז בשמחה, מסכמים מחיר, תנאי תשלום וכו' ומתחילים לעבוד יחד. אם לא – אז לא.

רמות 1-3 (ושאר רמות) הן דרך מצוינת "לחלוב" מעסקים כספים. ככל שהרמה עולה, אתה משלם יותר. בעולם הלינוקס לדוגמא, רמות לא קיימות. כשאתה קונה לדוגמא SLES או RHEL, אז אתה מקבל תמיכה על גירסת הלינוקס שרכשת (בהמשך אכנס ליתרונות ולחסרונות). אם התמיכה בחבילה שרכשת אינה מספקת לסיטואציה שלך, אז אתה יכול לרכוש שרותי Incident או Consulting (כל חברה והמושגים שלה) שבה אתה תשלם כמה מאות דולרים לשעה, ויצרן ההפצה יקדיש לך מישהו שישב על המערכת שלה למצוא מה התקלה ואיך לפתור אותה. היכן יש רמות בעולם הלינוקס? ברמת הדחיפות. אם ניקח לדוגמא את רמות התמיכה של Red Hat, נוכל לראות שיש רמות ב-SLA. רוצה שרות טלפוני? שלם 800$ פר עותק הפצה. רוצה שרות מהיר? המחיר קופץ ל-1500$ פר עותק (שוב, המחירים אינם כוללים מצבים שבהם מהנדס מוצמד לעסק שלך לפתור את הבעיה, שם התשלום ליצרן ההפצה הוא בנפרד ממה ששילמת על ההפצה).

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

כשזה מגיע לעסקים וחברות שמריצים עשרות/מאות/אלפי מכונות לינוקס לעומת זאת, אין יתרון ברכישת מנוי שנתי לתמיכה של יצרן ההפצה. בעסקים וחברות, ברוב המקרים התוכנות שמריצים על הלינוקס – הן יותר חדשות ממה שמגיעים עם ההפצה. לדוגמא, גירסת PHP שמגיעה בהפצת RHEL 7.4 היא גירסה 5.4.16 כאשר הגירסה היציבה היום לפי אתר PHP היא 7.1.10. אם תתקין את 7.1.10 על ה-RHEL ויהיו לך בעיות שה-PHP לא מצליח לרוץ, רד-האט לא תתן לך שרות הואיל והם נותנים אך ורק שרות לחבילות שהגיעו עם ההפצה עצמה, לא מ-REPO נוספים. דוגמא נוספת: רוצה להשתמש ב-NodeJS? הגירסה שקיימת היום ב-EPEL REPO היא אכן גירסת ה-LTS האחרונה, אבל שוב – מכיוון שזה REPO חיצוני, אין תמיכה רשמית מצד רד-האט.

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

  • אם יש בחברתכם IT שנותן תמיכת לינוקס, ואתם חושבים במהלך השנה להכניס טכנולוגיה/פלטפורמה חדשה – קחו יעוץ חיצוני (גם אם זה לשעות בודדות) שמכיר את הטכנולוגיה החדשה. חבל שתשרפו עשרות שעות על תקלות שהיועץ החיצוני כבר מכיר.
  • אם בחברתכם יש חובה להשתמש בהפצה מקורית (RHEL או SLES) ואתם רוצים עדכונים, אז מומלץ לחשוב על רשיונות SuSE Linux Enterprise עם Expanded Support – זה יתן לכם עדכונים גם ל-RHEL וגם ל-SUSE וזה גם יותר זול מ-RHEL מבחינת רישוי שנתי.
  • כיום כמעט בכל פרויקט לינוקס, החבילות מגיעות מבחוץ (Github או REPO חיצוניים) אינן נתמכות ע"י יצרן ההפצה ולכן אם אין לכם צוות לינוקס בחברה שיכול לבצע אינטגרציה במסגרת הזמן שאתם רוצים – קחו יעוץ חיצוני (כדאי לסכם שיכתבו עבורכם תיעוד).
  • אם אתם משתמשים (או חושבים לעבור) לאובונטו, עדיף לרכוש בנק שעות חודשי ליעוץ מומחה.

נקודות חשובות בשדרוג ל-CentOS 7.4

אחת למספר חודשים משחררת חברת רד-האט עדכון להפצות לינוקס שלה ועל מנת שלא לבלבל את הצרכנים, היא מעלה את גירסת ה-Minor של ההפצה. כך לדוגמא אם עד היום גירסת הלינוקס של רד-האט היתה 7.3, החל מעתה היא 7.4. יחד עם זאת, הפצות ישנות יותר של רד-האט (גירסאות 6 ו-5) עדיין מקבלות גם עדכונים, אם כי אלו מגיעים במועד מאוחר יותר וגם שם גירסת ה-Minor משתנה.

הפצת CentOS, למי שלא מכיר, היא הפצת לינוקס של רד-האט שנבנתה מחדש ותואמת במאת האחוזים, אם כי ללא כל הגרפיקה והלוגו של רד-האט, ומכיוון שכך, רבים נוטים להשתמש (כולל עבדכם הנאמן) בגירסת CentOS בשרתים (בדסקטופ אני מעדיף Fedora). תיקוני באגים ל-CentOS שמבוצעים ע"י הקבוצה שבונה את CentOS מוזרמים ישירות בחזרה לרד-האט על מנת לשמור על תאימות ואחידות.

כמו תמיד, בגרסאות עדכון Minor ישנם שינויים רבים בהפצה, אך שינויים אלו עדיין שומרים על תאימות בינארית, תאימות קבצי הגדרות וכו'. יחד עם זאת, בחלק מהמקרים מעדיפים ברד-האט (ונגזר מזה גם ב-CentOS) לשדרג חבילות מסויימות לגרסאות Major מתקדמות יותר ובלבד שתשאר התאימות. הסיבה לכך היא שהפצת לינוקס (בניגוד לגירסת Windows) כוללת אלפי חבילות (וזאת לפני הפעלת מאגר תוכנות מומלץ כמו EPEL) ואין לרד-האט את המשאבים לעקוב אחרי כל החבילות וליישם Backporting של עדכוני אבטחה. ברד-האט בודקים אם ישנן פריצות ידועות ואם הפריצות נחסמו בגירסה יציבה מתקדמת יותר, גירסת העדכון הבאה תכלול את הגירסה המתקדמת יותר (מה שנקרא בשפה המקצועית "Rebase").

ב-רד-האט שחררו מסמך ארוך לגבי השינויים ברד-האט 7.4 (וכמובן כל הדברים נמצאים ב-CentOS 7.4) שנמצא כאן ומאוד מומלץ לקריאה לפני שדרוג שרתים. ישנם שינויים כמעט בכל תחום, Kernel עם עדכוני מודולים, תמיכה בדרייברים חדשים, חבילות בגירסאות חדשות (ה-Rebase שהזכרתי לעיל). בלינק לעיל תוכלו למצוא את ה-General Updates שמדבר בכלליות על השינויים ומתחתיו פירוט לגבי השינויים.

ברוב המקרים, הרצת yum update תשדרג מערכת מכל גירסה קודמת (7.0, 7.1 וכו') לגירסה האחרונה בלי הרבה בעיות, אולם ישנם מקרים בהם השדרוג יכשל או יותר חמור – המכונה/VM לא תצליח לעשות Boot או לא תצליח להפעיל תקשורת דרך כניסות התקשורת הרגילות/וירטואליות.

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

  • אם אתם משתמשים ב-iptables וב-ip6tables (הראשון מיועד ל-IPV4 והשני ל-IPV6, הן מותקנות כברירת מחדל בהתקנה רגילה). אם אתם מפעילים את שתיהם, יכולות להיווצר בעיות של תקשורת. הבאג מתוקן ב-CentOS 7.4 בחבילה iptables-1.4.21-18.0.1.el7 אך הוא עדיין לא מתוקן ברד-האט 7.4. הפתרון המומלץ כרגע – להפעיל רק אחד מהם ולבטל את השני (בעזרת פקודת systemctl disable).
  • אם אתם משתמשים ב-Xen, מכונת VM של CentOS 7.4 עם דרייברים Paravirtualized – ה-VM לא יצליח לבצע BOOT וכרגע הפתרון הוא HVM (או PV-on-HVM). תיקון לכך יצא בקרוב.
  • במקרים מסויימים הרצת yum update תתקין חבילות i686 ולא X86-64. הבעיה מתרחשת עקב התקנת RDMA. אם אתם משתמשים ב-RDMA, מומלץ להריץ yum install rdma-core && yum update. אם אתם עדיין רואים בעיה, מומלץ להריץ yum install rdma-core ibacm. 
  • אם אתם רוצים להתקין VirtualBox על תחנת עבודה שתריץ כ-host את CentOS 7.4, תצטרכו להתקין את גירסת VirtualBox 5.1.28 מהאתר. גירסה 5.1.26 לא תעבוד.
  • משתמשים ב-VMware ורוצים להקים VM מבוסס CentOS 7.4? עקב שינויים שרד-האט ביצעו בקרנל, התקשורת הוירטואלית לא תעבוד. יש צורך בהתקנת Patch ל-VMware tools. לפרטים – כנסו ובצעו את ההוראות בקישור הזה.
  • חבילת ה-initramFS הרבה יותר גדולה מבעבר, ולכן אם מחיצת ה-boot/ שלכם קטנה מ-1 ג'יגהבייט, תצטרכו להרחיב אותה לפני השדרוג ל-7.4 לפחות לגודל 1 ג'יגהבייט (אני ממליץ להרחיב לגודל 5 ג'יגהבייט אם הנכם מתקינים מספר גרסאות קרנל).
  • יכול להיות ששרות SAMBA יפול עם השגיאה symbol krb5_get_init_creds_opt_set_pac_request, not defined. במקרים כאלו יש להתקין את חבילת  krb5-libs-1.15.1-8.el7 ולהפעיל את שרות SAMBA מחדש.
  • ועוד בעניין SAMBA – אם אתם עובדים עם אותנטיקציית SSSD ומאפשרים SHARE, זה לא יעבוד. כרגע האפשרות היחידה היא לשנמך לגירסה שקיימת בסנטוס 7.3. כרגע רד-האט עובדים על הבאג הזה.
  • נדיר, אבל ראיתי מקרים שזה קורה: אתם מפעילים את ה-CentOS ואין תקשורת עד שאתם מבצעים Login או שהתקשורת לא מופעלת בזמן Boot. במקרים כאלו, עקבו אחר ההוראות כאן.
  • החל מגירסה 7.4, מינימום זכרון שנדרש עבור המערכת הוא 1 ג'יגהבייט. במקרים שאתם רוצים להריץ את ה-ISO כ-LIVE, יש צורך בלפחות 1.5 ג'יגהבייט זכרון.
  • עוד בענייני VMWare: אם אתם מגדירים ידנית VM לשימוש עם CentOS 7.4, אל תנסו לבחור דרייברים SCSI אלא אך ורק את ה-Paravirtualized. דרייברים ל-SCSI ש-VMWare השתמשו כבר לא קיימים בקרנל הזה.
  • אוהבים את פקודת ifconfig ו-netstat? תתכוננו לשכוח מהם. הם מסומנים כ-Deprecated והם אינם מותקנים כברירת מחדל עם CentOS 7.4, ולכן אם הרשת שלך לא עלתה, השתמשו בפקודת nmcli כדי להפעיל את כרטיס הרשת ואז תוכלו להתקין את החבילה (ותתכוננו לשנות סקריפטים שמשתמשים בפקודות הנ"ל).
  • בסנטוס 7.4 מותקנת גירסה חדשה של sudo שמשתמשת ב-var/db/sudo/lectured/ ולפיכך ההתראה הראשונה שמשתמשים ב-sudo (עם האזהרות וכו') תופיע מחדש לכל המשתמשים ב-sudo לאחר שדרוג לסנטוס 7.4.
  • אם אתם משתמשים ב-CentOS 7.4 עם GNOME, יכול להיות שמנהל הקבצים (Nautilus) יראה את האייקונים מאוד גדולים. הפתרון הוא להריץ את הפקודה: gsettings set org.gnome.nautilus.icon-view default-zoom-level 'small' ולבצע lougout ולאחר מכן login.
  • אם אתם משתמשים ב-CentOS 7.3 (או גרסאות 7 קודמות) ואתם מריצים על זה OpenLDAP ואתם מתכוונים לשדרג, יש לבצע את ההוראות בלינקים כאן וכאן או שתהיה לכם בעיה רצינית עם ה-OpenLDAP. בכל מקרה אם מדובר ב-VM, בצעו snapshot לפני כן.

בכל מקרה, תמיד מומלץ להסתכל בדף ה-Errata של רד-האט ולוודא שאין עדכונים שלא התקנתם או שלא שמתם לב אליהם.

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

טיפ בנושא: שדרוג מכונות RHEL

כל מי שמשתמש בארגון שלו ב-RHEL בוודאי מודע לכך ששדרוגים של RHEL שונים מהפצות לינוקס אחרות, גם אם תואמות RHEL כמו CentOS ואחרות. ההבדל הגדול ביותר הוא שיש צורך להירשם לרשת RHN של רד-האט על מנת להוריד עדכונים. בלי רישום – אין עדכונים.

כשיש לכם שרת אחד או 2, או מספר קטן מאוד של תחנות RHEL, אז העדכון הוא עניין די פעוט (מבחינת udates, מבחינת upgrade עם אותם עדכונים זה משהו אחר), אבל מה עושים כשיש לך כמה עשרות ואולי מאות שרתים/תחנות עבודה? לתת לכל מכונה להוריד את העדכונים שלה זה נחמד אבל זה לוקח זמן, רוחב פס ודיסק בכל פעם. האם אי אפשר לסדר זאת בתצורה כזו שכל המכונות ישאבו משרת אחד?

לרד-האט יש פתרו שנקרא Red Hat Satellite המאפשר לא רק עדכונים אלא life-cycle שלם למכונות ושרתים שכולל שרותים כמו דיווחי באגים, תמיכה, קבלת תיקונים, בדיקות, יצירת ISO לצרכים שונים וכו'. הכלי הוא כלי גדול וגם עולה בהתאם (כמה אלפי דולרים מחיר התחלתי). אנחנו לעומת זאת צריכים רק את העדכונים, לאחסן אותם על שרת שלנו ואנחנו כבר נפיץ אותם בזמן שנקבע.

על מנת לבצע זאת, נצטרך קודם כל לברר אלו גרסאות RHEL אנחנו משתמשים בחברה. 5? 6? עבור כל אחת מהגרסאות העיקריות נצטרך VM עם המון דיסק פנוי (במינימום 40-50 ג'יגה) וכמובן רשיונות, רשיון פר גירסה Major כך שאם אנחנו משתמשים בחברה ב-RHEL-6 וגם RHEL-5 ולשתיהם אנחנו צריכים עדכונים, אנחנו צריכים 2 רשיונות (כמובן שצריך רשיונות לכל תחנת/שרת RHEL כדי לקבל תמיכה וכו') על מנת לבצע את הקמת ה-REPO החדש שלנו.

ראשית, יש להקים VM עם גירסת RHEL הרצויה. ההתקנה מספיק שתהיה בסיסית עם גישת רשת החוצה ב-HTTP. ויש לבצע register של אותה מכונה ל-RHN. לאחר ההתקנה יש ליצור תיקיה שאליה נאחסן את הקבצים. נקרא לה var/repo/

כעת יש לוודא שחבילת yum-utils וחבילת createrepo מותקנות. אם לא, אפשר להתקין אותם ישירות מה-ISO או בעזרת yum.

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

rhn-channel -l

אם הכל תקין, נקבל תשובה: rhel-x86_64-server-6 (במקרה שההתקנה היא 64 ביט גירסה 6).

כעת נתחיל לשאוב את העדכונים:

cd /var/repo
reposync -l --repoid=rhel-x86_64-server-6

עכשיו הגיע הזמן לקחת הפסקה, זה יקח זמן רב (תלוי בעומס התקשורת). מכיוון שאצל רד-האט אין הפרדה לגרסאות פר תיקיות (כמו ב-CentOS לדוגמא), הפקודה הנ"ל תוריד אליכם בערך 12000+ קבצי RPM, זה כמובן יקח זמן, אז תחזרו לזה אחרי שההורדה תסתיים.

הסתיים? מצוין, עכשיו ניצור ממה שירד repository עם הפקודה הבאה:

createrepo -v --update rhel-x86_64-server-6/getPackage/

זהו. יש לנו repo עם כל ה-RPMS שיש ב-RHEL-6 כולל דברים ישנים וחדשים.

על מנת לאפשר גישה לקבצים שהורדנו, נקים שרות httpd. התקינו את חבילת httpd ובתוך etc/httpd/conf.d/ נקים קובץ בשם repo.conf שיאפשר גישה לקבצים. הנה דוגמא לקובץ:

<VirtualHost *:80>
ServerName rhelrepo
DocumentRoot /var/repo/rhel-x86_64-server-6
ErrorLog logs/repo-error_log
CustomLog logs/repo-access_log common
<Directory "/var/repo/rhel-x86_64-server-6/">
Options Indexes FollowSymLinks
</Directory>
</VirtualHost>

שימו לב לשנות את שם ה-ServerName לשם השרת שלכם.

כעת נפעיל את שרות ה-httpd (עם הפקודה: service httpd restart) ועם הדפדפן ניגש לכתובת: http://rhelrepo/getPackage (שוב, שנו את השם rhelrepo לשם השרת שלכם). אם הכל תקין, תקבלו רשימה ארוכה של קבצי ה-RPM.

עכשיו מגיע החלק שתפיצו בעזרת כל כלי שתרצו – אל כל השרתים שלכם, קובץ repo שב בתיקיה etc/yum.repos.d/ שם ניצור קובץ שנקרא לו rhel6.repo

[RHEL-6-UPDATES]
name=RHEL-6.x Updates
baseurl=http://rhelrepo/getPackage/
enabled=1
gpgcheck=0

מומלץ למחוק את שאר הקבצים שנמצאים באותה תיקיה (ושמורידים את אותם עדכונים מרחוק).

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

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

אם אתם צריכים עדכונים ל-RHEL-5, ההבדל היחיד הוא בשם הערוץ, אותו תוכלו לקבל עם פקודת rhn-channel -l

בהצלחה

טיפ: להפוך מערכת CentOS ל-RHEL

בחברות שונות יש צורך להתקין מערכות RHEL במקום CentOS. זה יכול לקרות בגלל שמוצר שאתם רוצים להתקין מחייב RHEL רשמי (כמו תוכנות CAD מסחריות), או מקרים בהם חברות רוצות שהשרתי פרודקשן יהיו RHEL כדי לקבל תמיכה רשמית של רד-האט, או שהחברה התברכה בערימות מזומנים והם רוצים להעביר את כל (או חלק) מהמערכות ל-RHEL. 

בכל המקרים הנ"ל מדובר בהתקנה של המערכת מחדש, גם אם היה CentOS שתואם 1 ל-1 ל-RHEL. הפיכת המערכת ל-RHEL כעקרון לא מאושרת ע"י רד-האט, אבל מצד שני, מה שנעשה עכשיו, לא יתגלה ע"י רד-האט ונחסוך לעצמנו כאב ראש של התקנה.

לשם ההפיכה, נצטרך קודם כל את ה-ISO פרוס לקבצים בתיקיה כלשהי (אפשר כמובן על NFS, רק כדאי שתבצעו קודם כל mount במכונה שאנחנו הולכים לשנות). לאחר שביצענו mount נעבור למצב root (זה המצב שבו נישאר כרגע) עם sudo או – su.

עתה יש להריץ את הפקודה הבאה:

rpm -e --nodeps centos-release

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

עתה, נרים לנו REPO משלנו עם הנקודה שאליה ביצענו mount. כנסו לתיקיית etc/yum.repos.d/ ושם ניצור קובץ dvd.repo – הנה דוגמא משלי:

[DVD]
name=DVD REPO
baseurl=///mnt/Server/
enabled=1
gpgcheck=0

במקרה הנ"ל, ה-mount שביצעתי היה לתוך תיקיית mnt/ כמו כן יש לשים לב שכמות הקו נטוי (/) היא בתוספת / כך שאם מדובר במערכת קבצים מקומית (ולא http) יש צורך שיהיו 3 קווים נטויים.

כעת יש להעיף את קבצי ה-repo האחרים של CentOS (הם מתחילים במילה CentOS)

עכשיו ננסה להשתמש ב-repo החדש שהוספנו. הריצו את הפקודה הבאה:

yum install redhat-release

סביר להניח שההתקנה תבקש לעדכן את initscripts. אשרו את ההתקנה.

כעת יש צורך להריץ yum update על מנת לעדכן חבילות שונות. הכל יבוצע אוטומטית.

אם אתם מעוניינים לרשום את המכונה בשרתים של רד-האט, יש להריץ את הפקודה הבאה:

yum install rhnlib rhnsd rhn-client-tools rhn-check yum-rhn-plugin rhn-setup

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

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

זהו, כעת כל מה שנותר לבצע הוא reboot וכעת יש לכם שרת RHEL כאילו התקנתם אותו מאפס מה-ISO. תוכלו לבדוק זאת ע"י הקשת פקודת: lsb_release -d