אספקה ​​מתאימה: דרך חכמה וחסרת מאמץ לאספקה



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

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

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





הנושאים הניתנים הם:

אם ברצונך לשלוט ב- DevOps, ' כמובן צריכה להיות אפשרותך ללכת.



מה זה Ansible?

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

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

מה יכול Ansible להפוך לאוטומטי?

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



  1. הקצאה: יצירת סביבה מתאימה ליישום / תוכנה לחיות היא הכרחית. Ansible מספק דרך לאוטומציה של הסביבה שנוצרה לקיום היישום.
  2. ניהול תצורה: בצע מגוון רחב של משימות תצורה, כגון שירותי הפעלה / עצירה, שינוי תצורת מערכת, מכשיר או יישום וכו '.
  3. פריסת יישום: אוטומציה של הגדרת הפריסה באמצעות Ansible וניהול הפריסה באמצעות מגדל נגיש . זה הופך את כל מחזור היישומים מהייצור לפריסה ליעיל וניתן לניהול.
  4. אספקה ​​רציפה: יצירה וניהול של צינור אינטגרציה רציף / אספקה ​​רציפה יכול להיות מסורבל. שם נכנס Ansible ומקל על חיי היזם.
  5. אבטחה ותאימות: עבודה עם הפרויקטים, תמיד מציבה גבולות ומשולבת במדיניות האבטחה של החברה. השילוב של מדיניות האבטחה באופן אוטומטי בפריסה יכול להקל על קיום המדיניות.
  6. תִזמוּר: פרויקט שלם הוא אוסף של מקרים רבים ושונים בעלי תצורה שונה. Ansible מתמזג ומנהל את המקרים השונים הללו בכללותם.

צורך בהקצאה מתאימה

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

הדגמה: צור ערימת LAMP ופרס דף אינטרנט

ההבדל בין הארכות ליישומים

נניח שאתה מנסה לפרוס אתר על 30 מערכות, כל פריסת אתרים תדרוש מערכת הפעלה בסיסית, שרת אינטרנט, מסד נתונים ו- PHP. אנו משתמשים בפלייבק ansible להתקנת דרישות הקדם הללו בכל 30 המערכות בבת אחת.

בהדגמת אספקת Ansible זו, אראה לך כיצד לספק את סביבת אירוח האתרים באמצעות Ansible. אנו מתקינים את מחסנית LAMP (Linux, Apache, MySQL ו- PHP) ואז פורסים אתר.

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

יצרתי דף אינטרנט סטטי פשוט שנשמר בתיקיה אינדקס המכיל שני קבצים, index.html ו- style.css.

הפשטה ב- c ++

index.html:

  אתר באמצעות HTML ו- CSS                אמץ עכשיו        

style.css

* { שוליים: 0 ריפוד: 0 } כותרת { תמונת רקע: שיפוע לינארי (rgba (0,0,0,0.5), rgba (0,0,0,0.5)), url ('puppie.jpg') גובה: 100 וולט גודל רקע: כריכה עמדת רקע: מרכז } תפריט .nav { לצוף: מימין סגנון רשימה: אין שוליים למעלה: 30 פיקסלים } .nav-menu li { תצוגה: בלוק מוטבע } .nav-menu li a { צבע: טורקיז קישוט טקסט: אין ריפוד: 5 פיקסלים 20 פיקסלים משפחת גופנים: 'ורדנה', 'סנס-סריף' גודל גופן: 20 פיקסלים } .homebtn a { גבול: 1px אפור מלא צבע רקע: לבן } .nav-menu li a: רחף { גבול: 1px אפור מלא צבע רקע: לבן } .tagline { עמדה: מוחלט רוחב: 1200 פיקסלים שוליים-שמאל: 0 מרווח-עליון: 0 } h1 { צבע לבן גודל גופן: 50 פיקסלים משפחת גופנים: 'ורדנה', 'סנס-סריף' יישור טקסט: מרכז שוליים עליונים: 275 פיקסלים } .אמצו { שוליים למעלה: 30 פיקסלים שוליים-שמאל: 540 פיקסלים } .bttn { גבול: 1px לבן מלא ריפוד: 10 פיקסלים 30 פיקסלים צבע: צהוב משפחת גופנים: 'ורדנה', 'סנס-סריף' גודל גופן: 22 פיקסלים קישוט טקסט: אין } .אמץ a: רחף { צבע רקע: בורוויד }

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

$ sudo apt-get update $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa: ansible / ansible

לחץ על Enter כדי לקבל את תוספת ה- PPA ואז סוף סוף התקן את Ansible לאחר עדכון המאגרים.

$ sudo apt-get עדכון $ sudo apt-get להתקין ansible

שלב 2: עבור לקובץ השרת / etc / hosts והוסף את שם המארח ואת כתובת ה- IP של המארח.

מארחים וכו איור 1 - הוסף מארחים מרוחקים לקובץ / etc / hosts - אספקת Ansible

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

$ ssh-keygen

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

איור 2 - צור מפתח ssh - אספקה ​​מתאימה

כעת המפתח שנוצר צריך להיות נוכח אצל המארח שלך. העתקת המפתח למארח יכולה להיעשות בשתי דרכים, או להעתיק ידנית למארח או להשתמש בפקודה ssh-copy-id. במקרה זה, אני אעתיק אותו באמצעות הפקודה ssh-copy-id root @ IP_of_host.

$ ssh-copy-id root@192.168.56.104

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

שלב 4: הגדר תצורה של מארחי Ansible. עבור לקובץ / etc / ansible / hosts והוסף את שם המארח. זה ישתנה בהתאם למספר המארחים והשרתים שיש לך. אתה יכול גם לקבל יותר משרת אחדכאן.

איור 3 - הוסף מארחים מרוחקים בקובץ המלאי - אספקה ​​מתאימה

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

$ ansible -m פינג הכל

איור 4 - בדוק את הסטטוס של המארח המרוחק - אספקה ​​רגילה

מפתח פיתון ברמת הכניסה

שלב 6: עכשיו ה- Ansible שלנו מוכן, בואו נהפוך את הסביבה למוכנה לפריסת אתר. אנו מתכוונים להשתמש בחוברת Ansible יחידה להתקנת Apache, MySql ו- PHP. בואו נסתכל על זה.

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

--- # הגדרת מחסנית LAMP - מארחים: משימות host1: - שם: הוסף מאגר ppa להיות: כן apt_repository: repo = ppa: ondrej / php - שם: התקן את מחסנית המנורה להיות: כן apt: pkg: - apache2 - שרת mysql - php7.0 - מצב php7.0-mysql: מטמון העדכון הנוכחי: כן - שם: התחל שרת apache להיות: כן שירות: שם: apache2 מצב: התחיל מופעל: כן - שם: התחל שירות mysql להיות: כן שירותים: שם: מצב mysql: התחיל מופעל: כן - שם: צור קובץ ספריית יעד: path = / var / www / html state = mode directory = 0755 - שם: פריס index.html הפך: כן העתק: src: / etc / ansible / index / index.html dest: var / www / html / index / index.html

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

  • המשימה הראשונה מוסיפה את המאגר הנדרש להתקנת MySQL ו- PHP.
  • המשימה השנייה מתקנת את apache2, שרת MySQL, PHP ו- PHP-MySQL.
  • המשימה השלישית והרביעית מפעילה את שירות Apache ו- MySQL.
  • המשימה החמישית יוצרת ספריית יעד במחשב המארח ו-
  • לבסוף, המשימה השישית מבצעת את קובץ index.html, היא אוספת את הקובץ ממכונת השרת ומעתיקה אותו למחשב המארח.

הפעל את חוברת המשחק עם הפקודה הבאה:

$ ansible-playbook lamp.yml -K

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

איור 5 - ביצוע חוברת השמעה אפשרית - אספקה ​​מתאימה

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

איור 6 - מארח את האתר ב- Localhost - אספקה ​​מתאימה

עכשיו זה דף אינטרנט שנפרס בכל המארחים שמתקשרים עם השרת (במקרה שלנו היה לנו רק מארח אחד) אבל זה יהיה אפשרי אפילו עבור 100 מארחים מרוחקים.

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

יש לך שאלה עבורנו? אנא פרסם אותו ב ונחזור אליך.