**המדריך: שימוש במודול Ansible lineinfile**
Ansible הוא כלי אוטומציה נפלא הנמצא בשימוש נרחב, המסוגל לנהל מאות נודים בפעם אחת. ל-Ansible יש המון יכולות נהדרות, ואחת מתוך כן היא היכולת לנהל שורה יחידה בקובץ על נודים רחוקים באמצעות מודול Ansible lineinfile.
מודול Ansible lineinfile הוא מודול המבצע פעולות שונות על שורה יחידה בקובץ, כמו שינוי של שורה, עדכון של שורה או הוספת שורה מסוימת.
במדריך זה, תלמד כיצד להשתמש במודול Ansible lineinfile, איך הוא פועל, וכיצד להשתמש בו לניהול קבצי טקסט.
דרישות מוקדמות
המדריך הזה יהיה מדריך שלב אחרי שלב על מודול Ansible lineinfile. אם ברצונך להתקדם, הקפד לוודא שיש לך את התקנים הבאים:
- – מחשב במערכת השליטה של Ansible – המדריך ישתמש ב-Ansible גרסה 2.9.24 על מחשב Ubuntu 18.04.5 LTS.
- A remote computer to run commands. You’ll need an inventory file set up and one or more hosts already configured to run Ansible command and playbooks on. The remote Linux computer will be called myserver, and the tutorial will use an inventory group called web.
- – אם ברצונך להתקדם בדיוק כפי שהמדריך מציע, יש צורך שיהיה כבר מותקן Apache במחשב הרחוק.
שינוי קובץ טקסט עם מודול lineinfile של Ansible.
בואו נתחיל את המדריך הזה על ידי הרצת מודול lineinfile של Ansible באמצעות פקודות רשת אד הוק. פקודות אד הוק הן דרך מהירה לבדוק או להריץ פקודה יחידה על מארח מרוחק.
התחברו לשלט של Ansible שלכם והריצו את הפקודה הבאה. הפקודה הזו משתמשת במודול lineinfile (-m
) כדי להתחבר למכונת האינטרנט ולהעביר ארגומנט (-a
) שהוא הפקודה לביצוע.
במקרה זה, מודול lineinfile מעדכן את ערך המארח המקומי על ידי השמת כתובת ה-IP 127.0.0.1
עם myapache
בקובץ /etc/hosts. על ידי השמת 127.0.0.1
עם myapache
תאפשר לך לנווט אל דף הבדיקה של אפאצ'י מקומית ב-HTTP://myapache:80
path
מציין את מיקום הקובץ.regexp
מוצא את ביטוי הרגיל, אם קיים, בקובץ ומעדכן אותו עם127.0.0.1 myapache
שצויין בפרמטר ה-line
.- –become האפשרות מאפשרת לך להריץ את הפקודה כמשתמש בעל זכויות גישה מיוחדות.
- ה-
web
הוא קבוצת המלאי שהיא אוסף של כל השרתים. ansible.builtin.lineinfile
או פשוט lineinfile הוא שם המודול.
לאחר הרצת הפקודה, אתם צריכים לראות הודעת CHANGED שמאשרת כי השורה עודכנה בהצלחה בשרת המרוחק.

התחברו לצומת המרוחק באמצעות לקוח SSH ווּדאו שקובץ /etc/hosts עודכן עם הערך החדש באמצעות פקודת cat
.
כפי שניתן לראות למטה, ערך הלוקלהוסט עודכן בהצלחה ל 127.0.0.1 myapache
על המכונה המרוחקת.

שינוי קובצי טקסט מרובים בתוך פלייבוק
עבודה עם פקודה אד-הוק יחידה כדי לנהל שורות על מכונה מרוחקת יכולה להיות בסדר, אך זה יהיה מסובך אם יש לכם שורות בקבצים מרובים או מספר שורות בקובץ אחד לניהול. במקום להשתמש בפקודות אד-הוק, שקלו להשתמש במודול lineinfile של Ansible בתוך הפלייבוק באמצעות הפקודה ansible-playbook.
עכשיו, בואו נלמד כיצד להשתמש במודול lineinfile של Ansible בתוך הפלייבוק ולשנות כמה שורות.
בהנחה שאתם כבר מחוברים למארח השליטה של Ansible:
1. צרו ספרייה בשם ansible_lineinfile_module_demo בתיקיית הבית שלכם. ספרייה זו תכיל את הפלייבוק שתשתמשו בו כדי להפעיל את מודול lineinfile.
2. ליצור קובץ נוסף בשם my_playbook.yml בתיקייה ~/ansible_lineinfile_module_demo ולהדביק בו את תוכן ה- YAML הבא. הפלייבוק הזה מכיל מספר משימות שמשתמשות במודול Ansible lineinfile
כדי לנהל שורות בקבצי התצורה השונים עבור Apache במחשב המרוחק.
הפלייבוק מכיל את המשימות הבאות:
1. בודק אם ADMIN
קיים בקובץ /etc/sudoers; אם לא, המשימה מוסיפה אותו.
2. מבטיח שה-Apache הברירת מחדל מאזין לפורט 8080 בקובץ /etc/apache2/ports.conf; אם נמצא שורה עם פורט אחר, מודול lineinfile מעדכן אותו לפורט 8080
. באופן דומה, בקובץ /etc/apache2/apache2.conf, הוא מעדכן את MaxKeepAliveRequests
ל-1000 ואת KeepAliveTimeout
ל-100.
3. מוסיף שורה עם הטקסט "Hello This is my Apache Page" לסוף קובץ ה- index.html
בשרת המרוחק בתיקייה /var/www/html.
פלייבוקים של Ansible נכתבים ב- YAML. למידע נוסף אודות YAML, לחץ כאן
3. כעת, הפעל את קובץ הפעולות ובצע את המשימות באמצעות פקודת ansible-playbook
כדי להוסיף או לעדכן את כל השורות המוגדרות בקובץ הפעולות על השרת המרוחק.

למטה, תוכל לראות שלמשימה TASK יש סטטוס של changed, המעיד על כך שהשרת המרוחק לא היה במצב הנכון ונערך כדי להריץ את הפקודה. למשימה TASK שיש לה סטטוס OK, זה מראה שאין צורך בשינויים.
4. לאחר מכן, התחבר באמצעות SSH לשרת המרוחק באמצעות סוחר SSH אהוב עליך.
5. לבסוף, אמת שכל השורות המוגדרות בקובץ הפעולות my_playbook.yml עודכנו או נוספו על שרת המרוחק באמצעות פקודת cat
.
התמונה למטה מאשרת כי admin
כבר נוסף לקובץ ה-sudoers.

שוב, התמונה למטה מאשרת כי האפאצ'י מאזין ל-Port 8080
כברירת מחדל.

לבסוף, לוודא שהגדרות ה-MaxKeepAliveRequests
וה-KeepAliveTimeout
עודכנו ל-1000 ו-100 בהתאמה.

MaxKeepAliveRequests
and KeepAliveTimeout
in the config file מסקנה
מודול lineinfile של Ansible הוא דרך מצוינת לשנות קבצי טקסט על מארחים מרוחקים. המודול מספק דרך מצוינת להוסיף, להסיר ולשנות שורות בקבצי טקסט בתוך ה-playbooks שלך.
אילו מקרים נוספים אתה רואה שיכולים להועיל מהמודול lineinfile של Ansible?