איך להתקין ולהגדיר את Ansible על Ubuntu 20.04

הקדמה

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

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

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

דרישות מוקדמות

למעקב אחרי המדריך הזה, יש לך צורך:

  • מחשב שליטה אחד של Ansible: מחשב השליטה של Ansible הוא המכונה שנשתמש בה כדי להתחבר למחשבי המארח של Ansible ולשלוט בהם דרך SSH. מחשב השליטה שלך יכול להיות המחשב המקומי שלך או שרת מיוחד שמוקדש להפעלת Ansible, אך מדריך זה מניח שמחשב השליטה שלך הוא מערכת Ubuntu 20.04. ודא שיש למחשב השליטה:

    • משתמש לא-שורש עם הרשאות sudo. כדי להגדיר זאת, תוכל לעקוב אחר שלבים 2 ו-3 של מדריך ההתקנה הראשונית שלנו ל- Ubuntu 20.04. עם זאת, יש לשים לב כי אם אתה משתמש בשרת רחוק כמחשב השליטה שלך, עליך לעקוב אחר כל שלב במדריך זה. עשיית זאת תגדיר חומת אש על השרת באמצעות ufw ותאפשר גישה חיצונית לפרופיל המשתמש לא-שורש שלך, שני הדברים יעזרו לשמור על אבטחת השרת הרחוק.
    • זוג מפתחות SSH הקשורים עם משתמש זה. כדי להגדיר זאת, תוכל לעקוב אחר שלב 1 של המדריך שלנו על איך להגדיר מפתחות SSH ב- Ubuntu 20.04.
  • אחד או יותר מארחי Ansible: מארח Ansible הוא כל מכונה שנקבע לשלוט בה על ידי נוד השליטה של Ansible שלך. מדריך זה מניח שמארחי ה-Ansible שלך הם שרתי Ubuntu 20.04 מרוחקים. ודא שכל אחד מארחי ה-Ansible מכיל:

    • מפתח ה-SSH הציבורי של נוד השליטה של Ansible מתווסף ל-authorized_keys של משתמש מערכת. משתמש זה יכול להיות או root או משתמש רגיל עם הרשאות sudo. כדי להגדיר זאת, ניתן לעקוב אחר שלב 2 של כיצד להגדיר מפתחות SSH ב-Ubuntu 20.04.

שלב 1 — התקנת Ansible

כדי להתחיל להשתמש ב־Ansible כדי לנהל את תשתיות השרת שלך, עליך להתקין את תוכנת Ansible על המכונה שתשמש כצומת בקרת Ansible.

מהצומת הבקרה שלך, הרץ את הפקודה הבאה כדי לכלול את PPA הרשמי של הפרויקט ברשימת מקורות המערכת שלך:

  1. sudo apt-add-repository ppa:ansible/ansible

לחץ על ENTER כאשר תתבקש לאשר את הוספת ה־PPA.

לאחר מכן, רענן את אינדקס החבילות של המערכת שלך כך שהוא יודע על החבילות הזמינות ב־PPA שכלול חדש זה:

  1. sudo apt update

לאחר עדכון זה, תוכל להתקין את תוכנת Ansible עם:

  1. sudo apt install ansible

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

שלב 2 — הגדרת קובץ המלאי

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

כדי לערוך את תוכן קובץ המלאי של Ansible ברירת המחדל שלך, פתח את קובץ /etc/ansible/hosts בעזרת עורך הטקסט שתבחר, בשרת הבקרה שלך ב- Ansible:

  1. sudo nano /etc/ansible/hosts

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

קובץ המלאי ברירת המחדל שמסופק על ידי ההתקנה של Ansible מכיל מספר דוגמאות שתוכל להשתמש בהן כתצוגות להגדרת המלאי שלך. הדוגמה הבאה מגדירה קבוצה בשם [שרתים] עם שלושה שרתים שונים בו, כל אחד מזוהה על ידי שם מותאם אישית: שרת1, שרת2, ו שרת3. יש לוודא שאתה מחליף את כתובות ה-IP המודגשות עם כתובות ה-IP של השרתים שלך ב- Ansible.

/etc/ansible/hosts
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113

[all:vars]
ansible_python_interpreter=/usr/bin/python3

התת-קבוצה all:vars מגדירה את הפרמטר ansible_python_interpreter של המארח שיהיה תקף עבור כל המארחים הכלולים ברישום זה. הפרמטר הזה מבטיח שהשרת המרוחק יעשה שימוש ב־ Python 3 במקום ב־ Python 2.7, שאינו קיים בגרסאות אחרונות של Ubuntu.

כאשר אתה מסיים, שמור וסגור את הקובץ על ידי לחיצה על CTRL+X ואז Y, ולבסוף ENTER כדי לאשר את השינויים שלך.

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

  1. ansible-inventory --list -y

תראה פלט דומה לזה, אך הוא יכיל את התשתיות שרת שלך כפי שהוגדרו בקובץ הרישום שלך:

Output
all: children: servers: hosts: server1: ansible_host: 203.0.113.111 ansible_python_interpreter: /usr/bin/python3 server2: ansible_host: 203.0.113.112 ansible_python_interpreter: /usr/bin/python3 server3: ansible_host: 203.0.113.113 ansible_python_interpreter: /usr/bin/python3 ungrouped: {}

עכשיו שהגדרת את קובץ הרישום שלך, יש לך את כל הדרוש לבדוק את החיבור לשרתי ה־ Ansible שלך.

שלב 3 — בדיקת חיבור

לאחר שהגדרת את קובץ הרישום כך שיכלול את השרתים שלך, הגיע הזמן לבדוק אם יש ל־ Ansible אפשרות להתחבר אל השרתים אלו ולהריץ פקודות דרך SSH.

למדריך זה, נשתמש בחשבון ה־ Ubuntu root משום שנראה כי זהו החשבון היחידי שקיים כבר בשרתים שנוצרו לאחרונה. אם יש לך כבר משתמש sudo רגיל בשרתי Ansible שלך, מומלץ להשתמש בחשבון זה במקום.

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

מהמכונה המקומית שלך או מנקודת השליטה של Ansible, הרץ:

  1. ansible all -m ping -u root

פקודה זו תשתמש במודול ping המובנה של Ansible כדי להריץ בדיקת תקשורת על כל הצמתים מהמניה המקורית שלך, מתחברת כ root. המודול ping יבדוק:

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

עליך לקבל פלט דומה לזה:

Output
server1 | SUCCESS => { "changed": false, "ping": "pong" } server2 | SUCCESS => { "changed": false, "ping": "pong" } server3 | SUCCESS => { "changed": false, "ping": "pong" }

אם זה הפעם הראשונה שאתה מתחבר לשרתים אלו דרך SSH, יתבקש ממך לאשר את האותנטיות של המארחים שאתה מתחבר אליהם דרך Ansible. כאשר יתבקש ממך, הקלד yes ואז לחץ על ENTER כדי לאשר.

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

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

שלב 4 — הרצת פקודות חד-פעמיות (אופציונלי)

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

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

  1. ansible all -a "df -h" -u root
Output
server1 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 798M 624K 798M 1% /run /dev/vda1 155G 2.3G 153G 2% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 798M 0 798M 0% /run/user/0 server2 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 395M 608K 394M 1% /run /dev/vda1 78G 2.2G 76G 3% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 395M 0 395M 0% /run/user/0 ...

הפקודה שהוסברה df -h יכולה להתחלף בכל פקודה שתרצה.

תוכל גם להריץ מודולים של Ansible דרך פקודות חד-פעמיות, בדומה למה שעשינו קודם עם מודול ה- ping לבדיקת חיבור. לדוגמה, הנה כיצד ניתן להשתמש במודול apt להתקנת גרסה האחרונה של vim על כל השרתים במלאי שלך:

  1. ansible all -m apt -a "name=vim state=latest" -u root

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

  1. ansible servers -a "uptime" -u root

ניתן לציין מארחים מרובים על ידי הפרדתם בפיתוחים:

  1. ansible server1:server2 -m ping -u root

למידע נוסף על איך להשתמש ב־Ansible, כולל איך להריץ playbooks כדי לאוטומט תסדר את השרת, תוכל לבדוק את המדריך המפורט שלנו מדריך התייחסות ל־Ansible.

מסקנה

במדריך זה, התקנת את Ansible והגדרת קובץ אינוונטורי כדי להריץ פקודות ad-hoc ממכונת בקרת Ansible.

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

למידע נוסף על איך להשתמש ב־Ansible, תוכל לבדוק את מדריך גלוי ל־Ansible שלנו.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-ansible-on-ubuntu-20-04