הקדמה לניהול הגדרות עם Ansible

מבוא

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

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

מדריך זה יעבור על היתרונות של שימוש בכלי ניהול הגדרות לאוטומציה של הגדרת התשתית של השרתים שלך, ואיך כלי כזה, Ansible, יכול לעזור לך בכך.

יתרונות של שימוש בכלי ניהול הגדרות

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

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

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

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

סקירת Ansible

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

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

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

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

התנהגות אידמפוטנטית

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

תמיכה במשתנים, תנאים ולולאות

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

עובדות מערכת

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

מערכת תבניות

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

תמיכה בהרחבות ומודולים

ל-Ansible יש מאות מודולים מובנים שמקלים על כתיבת אוטומציה למשימות ניהול מערכות נפוצות, כגון התקנת חבילות עם apt וסנכרון קבצים עם rsync, וגם להתמודדות עם תוכנות פופולריות כמו מערכות מסדי נתונים (כמו MySQL, PostgreSQL, MongoDB ואחרים) וכלים לניהול תלות (כמו composer של PHP, gem של Ruby, npm של Node ואחרים). מלבד זאת, יש מספר דרכים שבהן ניתן להרחיב את Ansible: פלוגינים ומודולים הם אפשרויות טובות כשאתה צריך פונקציונליות מותאמת אישית שאינה קיימת כברירת מחדל.

ניתן גם למצוא מודולים ופלוגינים של צד שלישי בפורטל Ansible Galaxy.

הכרת מושגי Ansible

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

צומת בקרה

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

צמתים מנוהלים

המערכות שאתה שולט בהן באמצעות Ansible נקראות צמתים מנוהלים. Ansible דורש שצמתים מנוהלים יהיו נגישים דרך SSH, ויש להתקין בהם Python 2 (גרסה 2.6 ומעלה) או Python 3 (גרסה 3.5 ומעלה).

Ansible תומך במגוון רחב של מערכות הפעלה כולל שרתי Windows כצמתים מנוהלים.

מלכודת

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

משימות

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

ספרייה

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

מטפלים

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

תפקידים

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

סיכום

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

בחלק הבא של הסדרה הזו, נראה כיצד להתקין ולהתחיל עם Ansible בשרת Ubuntu 20.04.

Source:
https://www.digitalocean.com/community/conceptual_articles/an-introduction-to-configuration-management-with-ansible