בעולם התפתחות התוכנה המשתנה תמיד, ניהול שרתים מרחוק יעיל הוא חיוני. בין אם אתה מנהל מערכות, מהנדס תוכנה, או מפתח תוכנה, היכולת להריץ פקודות לינוקס על שרתים מרחוק היא משימה נפוצה.
כאן מתבצע פעולה זו עם Fabric, ספריית Python ברמה גבוהה שמיועדת לבצע פקודות לינוקס מרחוק דרך SSH, והופכת אותו לכלי לא ניתן להחמיץ למי שצריך לנהל מערכות מרחוק בעזרת יכולות של Python.
מהו Fabric?
Fabric היא ספרייה מדוייקת ב Python שמקלה על תהליך הרצת פקודות shell על שרתים מרחוק דרך חיבורי SSH. הותקנה במקור על ידי Jeff Forcier ואחר כך הפכה לפרוייקט קוד פתוח.
היא מספקת ממשק גבוהה ברמה, פייתוני לעבוד עם מערכות מרחוק, המאפשר לך לאוטומטיזציה של משימות, להפצת קוד, ולניהול הגדרות על מספר שרתים בקלות.
למה להשתמש ב-Fabric?
ישנם כמה סיבות משכנעות לבחור ב-Fabric עבור צרכי הרצת פקודות מרחוק שלך:
- גישת פייתונית – פאבריק מצטרף לפילוסופיה של פייתון, ומשפרת את הפיתוח ואת הניהול של מערכות על ידי כתיבת סקריפטים בשפה בה המפתחים ומנהלי המערכות כבר מוכרים.
- SSH ו- Paramiko – פאבריק מתבסס על ספריית Paramiko כדי לטפל בחיבורי SSH, המספקת דרך מאובטחת ואמינה לביצוע פקודות מרחוק.
- זרימת עבודה על בסיס משימות – פאבריק מעודד גישה מונחית משימות לביצוע פקודות מרחוק. אתה מגדיר משימות, שבעצם מהן פונקציות פייתון, ופאבריק טופל בביצוען על שרתים מרוחקים.
- מקרי שימוש – פאבריק הוא כלי רב-תכליתי המתאים למגוון רחב של מקרי שימוש, כולל הרצת יישומים, ניהול תצורות שרת, וביצוע משימות תחזוקת מערכת.
במדריך זה, נכסוף את השלבים להכנסה ולהתחלה עם שימוש בפאבריק לשדרוג אדמיניסטרציה של שרתים עבור קבוצות של שרתים.
איך להתקין את כלי האוטומציה של פאבריק בלינוקס
מאפיין חשוב של פאבריק הוא שהמכונות המרוחקות שאתה צריך לנהל צריכות רק להיות מותקנות עם שרת OpenSSH סטנדרטי.
אתה רק צריך להתקין דרישות מסוימות על השרת ממנו אתה מנהל את השרתים הרחוקים לפני שאפשר להתחיל.
דרישות:
- Python 2.5+ עם הראדיוס הפיתוח
- Python-setuptools ו-pip (אופציונלי, אך מועדף) gcc
Fabric מתקבל בקלות באמצעות מנהל החבילות pip, אך ייתכן שתעדיף לבחור את המנהל החבילה הברירת מחדל שלך yum, dnf, או apt/apt-get להתקין את החבילה fabric, שמכונה בדרך כלל fabric או python-fabric.
התקן Fabric במערכות RHEL
על מערכות ההפקה מבוססות RHEL כגון CentOS Stream, Rocky Linux ו-AlmaLinux, עליך להתקין ולאפשר את מאגר EPEL במערכת כדי להתקין את החבילה fabric.
sudo dnf install epel-release sudo dnf install fabric
התקנת Fabric במערכות Debian
במערכות ההפקה מבוססות Debian כגון Ubuntu ו-Linux Mint, המשתמשים יכולים פשוט לבצע apt כדי להתקין את החבילה fabric כפי שמוצג:
sudo apt install fabric
התקנת Fabric באמצעות PiP
אם fabric אינו זמין ממאגרי המערכת שלך, תוכל להשתמש ב-pip כדי להתקין אותו כפי שמוצג.
sudo yum install python3-pip [On RedHat based systems] sudo dnf install python3-pip [On Fedora 22+ versions] sudo apt install python3-pip [On Debian based systems]
ברגע ש-pip מותקן בהצלחה, תוכל להשתמש ב-pip כדי להשיג את הגרסה האחרונה של fabric כפי שמוצג:
pip3 install fabric
איך להשתמש ב-Fabric לאוטומציה של משימות שלטון ב-Linux
בואו נתחיל להסתכל על איך להשתמש ב-Fabric. כחלק מתהליך ההתקנה, סקריפט פייתון בשם 'fab'
הוסר לספרייה במסלול המערכת של המערכת שלך. סקריפט 'fab'
מטפל בכל המשימות כשמשתמשים ב-Fabric.
רוץ פקודות לינוקס מקומית
לפי המוסכמה, אתה צריך להתחיל על ידי יצירת קובץ פייתון הנקרא fabfile.py
באמצעות העורך הקודם האהוב עליך. זכור שאתה יכול לתת לקובץ זה שם אחר כפי שאתה מקסים, אך תצטרך לציין את מסלול הקובץ כך:
fab --fabfile /path/to/the/file.py
Fabric משתמש ב'fabfile.py'
כדי להפעיל משימות, 'fabfile'
צריך להיות באותו המדריך בו אתה מבצע את Fabric כלי.
דוגמה 1: בואו ניצור קודם כל Hello World
בסיסי.
# vi fabfile.py
הוסף את שורות הקוד האלה לקובץ.
def hello(): print('Hello world, Tecmint community')
שמור את הקובץ והפעל את הפקודה שלמטה.
# fab hello

בואו עכשיו נבחן דוגמא של fabfile.py לביצוע הפקודה uptime במחשב המקומי.
דוגמה 2: פתח קובץ fabfile.py חדש כך:
# vi fabfile.py
והדבק את השורות הבאות של הקוד בקובץ.
#! /usr/bin/env python from fabric.api import local def uptime(): local('uptime')
ואז שמור את הקובץ והפעל את הפקודה הבאה:
# fab uptime

רוץ פקודות לינוקס מרחוק מעל SSH
הFabric API משתמש במילון הם קבועים שהוא שווה פייתון של מערך אסוציאטיבי הידוע כenv
, אשר מאחסן ערכים ששולטים במה שFabric עושה.
ה- env.hosts
הוא רשימה של שרתים עליהם אתה רוצה להריץ משימות Fabric. אם הרשת שלך היא 192.168.0.0 ואתה רוצה לנהל שרתים 192.168.0.2 ו- 192.168.0.6 עם fabfile שלך, אתה יכול להגדיר את env.hosts כדלקמן:
#!/usr/bin/env python from fabric.api import env env.hosts = [ '192.168.0.2', '192.168.0.6' ]
השורה של הקוד לעיל מציינת רק את השרתים עליהם תריץ משימות Fabric אך לא עושה דבר נוסף. לכן אפשר להגדיר כמה משימות, Fabric מספק קבצים של פונקציות שאפשר להשתמש בהם כדי לתקשר עם המכונות המרוחקות שלך.
אם כי יש הרבה פונקציות, הנפוצות ביותר הן:
- run – שפועלת פקודת שפה על מכונה מרוחקת.
- local – שפועלת פקודה על המכונה המקומית.
- sudo – שפועלת פקודת שפה על מכונה מרוחקת, עם זכויות שולט.
- Get – שפועלת הורדת קבצים מכמה מהמכונות המרוחקות.
- Put – שפועלת העלאת קבצים מכמה מהמכונות המרוחקות.
דוגמה 3: כדי להדפיס הודעה על מכונות מרובות יצור fabfile.py
כמו הבא.
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def echo(): run("echo -n 'Hello, you are tuned to Tecmint ' ")
כדי לבצע את המשימות, הפעל את הפקודה הבאה:
# fab echo

דוגמה 4: אפשר לשפר את הfabfile.py
שיצרת קודם לכן כדי לבצע את הפקודת uptime על המחשב המקומי כך שהוא מפעיל את הפקודת uptime וגם בודק שימוש בכובע באמצעות הפקודת df על מספר מכונות כדלקמן:
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def uptime(): run('uptime') def disk_space(): run('df -h')
שמור את הקובץ והרץ את הפקודה הבאה:
# fab uptime # fab disk_space

התקנה אוטומטית של ערוץ LAMP על שרת קרוב של Linux
דוגמה 4: בואו נבחן דוגמה לפריסת LAMP (לינוקס, אפטשי, מסי/מריארדב, ופייתון) שרת על שרת קרוב של לינוקס.
נכתוב פונקציה שתאפשר להתקין את LAMP מרחוק באמצעות זכויות שורש.
ל-RHEL/CentOS ו-Fedora
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def deploy_lamp(): run ("yum install -y httpd mariadb-server php php-mysql")
ל-Debian/Ubuntu ו-Linux Mint
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def deploy_lamp(): sudo("apt-get install -q apache2 mysql-server libapache2-mod-php php-mysql")
שמור את הקובץ והרץ את הפקודה הבאה:
# fab deploy_lamp
הערה: בגלל הפלט הרב, אנו לא יכולים ליצור סריקה (גיף מונפה) לדוגמה זו.
עכשיו אתה יכול לבצע משימות ניהול שרת לינוקס אוטומטיות באמצעות פבריק ואפשרויותיו והדוגמאות שניתנו לעיל…
אפשרויות פיבריק שימושיות
- תוכל להפעיל
fab --help
כדי לצפות במידע מועיל ורשימה ארוכה של אפשרויות שורת הפקודה הזמינות. - אפשרות חשובה
--fabfile=PATH
המאפשרת לך לציין קובץ מודול Python שונה לייבא מאשרfabfile.py
. - כדי לציין שם משתמש לשימוש בעת קישור למארחים מרוחקים, השתמש באפשרות
--user=USER
. - כדי להשתמש בסיסמה לאימות ו/או sudo, השתמש באפשרות
--password=PASSWORD
. - כדי להדפיס פרטים מפורטים על פקודת NAME, השתמש באפשרות
--display=NAME
. - כדי לצפות בפורמטים השתמש
--list
אפשרות, בחר: קצר, נורמלי, מקופל, השתמש באפשרות--list-format=FORMAT
. - כדי להדפיס רשימה של פקודות אפשריות ולצאת, כלו באפשרות
--list
. - אפשר לציין את מיקום קובץ ה конфигурации לשימוש באמצעות אפשרות
--config=PATH
. - כדי להצג פלט שגיאות צבעוני, השתמש ב
--colorize-errors
. - כדי לצפות במספר גרסת התוכנית ולצאת, השתמש באפשרות
--version
.
סיכום
Fabric היא ספריית Python חזקה המאפשרת ביצוע פקודות מרוחקות מעל SSH, מה שמספק גישה פייתוןית ידידותית למשתמש. היכולת שלה לפשט משימות מורכבות ולאוטומט ניהול מערכת הופכת אותה לכלי יקר עבור מנהלי מערכות, מפתחים ואנשי DevOps.
בין שאתה מנהל שרת יחיד או מפעיל הקמה בגדלים גדולים, Fabric יכול לעזור לך לבצע את המשימה ביעילות וביעילות.
Source:
https://www.tecmint.com/automating-linux-system-administration-tasks/