Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

שימוש שמח

השתמש -h עם כל פקודה happy-* כדי להציג את העזרה ואת רשימת האפשרויות לאותה פקודה.

תיקי מדינה

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

קובץ מצב ברירת המחדל ממוקם ב ~/.happy_state.json . שם ברירת המחדל של המדינה happy , כפי שניתן לראות בפלט happy-state :

happy-state

State Name:  happy

מדינות מקבילות

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

HAPPY_STATE_ID לא נוצר במהלך ההתקנה של Happy. צור ערך עם ערך שאינו state כדי לעבור מייד למצב שמח אחר.

export HAPPY_STATE_ID="sunny"

כעת בדיקת תוצאות happy-state אחר:

happy-state

State Name:  sunny

כל מדינה נשמרת בקובץ ~/.${HAPPY_STATE_ID}_state.json . כדי לעבור בין מצבים, הפעל שוב את export HAPPY_STATE_ID=" <state-name> " .

הסר התקנה עם מצבים מקבילים

אם אתה משתמש במצבי שמח מקבילים וברצונך להסיר את ההתקנה של 'שמח', הקפד להפעיל happy-state-delete כאשר כל מדינה פעילה. זה מבטיח שכל מרחבי השמות ברשת שנוצרו על ידי Happy יוסרו מהמערכת שלך מבלי להשפיע על תצורת הרשת המארחת של לינוקס.

לדוגמה, עם שתי מצבי happy sunny :

export HAPPY_STATE_ID="sunny"
happy-state-delete
export HAPPY_STATE_ID="happy"
happy-state-delete

הסר ידנית כל קובץ מצב מקביל לפי הצורך:

rm -f ~/.sunny_state.json
rm -f ~/.sunny_state.json.lock
rm -f ~/.happy_state.json
rm -f ~/.happy_state.json.lock

יומנים

שמח שולח יומנים ל- syslog כברירת מחדל. גיבוי יומן שני נשלח אל /tmp/${HAPPY_STATE_ID}_debug_log.txt .

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

לדוגמה, happy-node-add node00 יוצר צומת שמח. פלט היומן עבור פקודה זו הוא:

DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist
DEBUG [Driver:writeState():365] Happy: writing Happy state to file
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up

כל Driver:CallCmd() קווי Driver:CallCmd() הם פקודות הקונכיות ש- Happy קורא להן. שקול כל שורה ביומן:

# Check to see if the target namespace (happy000) exists
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist

# Write the link between node00 and happy000 in ~/.happy_state.json
DEBUG [Driver:writeState():365] Happy: writing Happy state to file

# Create the network namespace for the node
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000

# Check to see if the target namespace (happy000) exists
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists

# Bring up the loopback interface within the happy000 namespace
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up

טופולוגיות לדוגמא

טופולוגיות דוגמיות כלולות במאגרי Happy ו- OpenWeave לבדיקה. השתמש בהם גם כדי ללמוד את הפקודות לבניית טופולוגיות מורכבות.

טופולוגיות הן בפורמט JSON ו- Shell Script.

ג'סון

קבצי הטופולוגיה של JSON נטענים באמצעות happy-state-load או happy-state-load weave-state-load . אם הטופולוגיה כוללת Weave, עליך להשתמש weave-state-load כדי לטעון את הטופולוגיה, אחרת הדילוגים על הפקודות הספציפיות לארוג.

לדוגמה, טופולוגיה ללא Weave:

happy-state-load thread_wifi_ap_internet.json

טופולוגיה עם Weave:

weave-state-load three_nodes_on_thread_weave.json

כדי לשמור את הטופולוגיה הנוכחית שלך כקובץ JSON נפרד לשימוש מאוחר יותר (לדוגמה, סקריפט מקרה מבחן ), השתמש ב- happy-shell -s :

happy-shell -s my_topology.json

זה שומר את קובץ המצב הטופולוגי בספריית $HOME .

תסריטים של מעטפת

קבצי טופולוגיית סקריפט של מעטפת מכילים את מערך הפקודות Happy and Weave כדי ליצור את הטופולוגיות בקבצי JSON המתאימים. לסקריפטים אלה כברירת מחדל אין הרשאות הפעלה. ניתן לנהל אותם בשתי דרכים:

באמצעות הפקודה bash :

bash thread_wifi_ap_internet.sh

על ידי החלת הרשאות הפעלה:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

תְצוּרָה

ל- Happy שלושה קבצי תצורה:

קובץ תצורה תיאור
~/.happy_conf.json משתני תצורה לשימוש אישי או פלאגין. הגדר ערכים אלה באמצעות הפקודה happy-configuration .
<path-to-happy> /happy/conf/main_config.json משתני תצורה ראשוניים שמחים.
<path-to-happy> /happy/conf/log_config.json תצורת יומן.

הוסף משתני תצורה

אנו ממליצים להשתמש בפקודת happy-configuration כל משתנים אישיים או תוספים מעבר לברירות המחדל שהפריסה הספציפית שלך של Happy צריכה.

לדוגמה, כדי לאפשר ל- Happy לדעת היכן למצוא את ספריית test-apps Weave עבור סקריפטים לבדיקה, הגדר את המשתנה weave_path :

happy-configuration weave_path <path-to-openweave-core>/build/x86_64-unknown-linux-gnu/src/test-apps

Happy מאחסנת משתני תצורה ב- ~/.happy_conf.json .

תהליכים בצמתים

Happy מספק פקודות להתחיל ולעצור תהליכים בתוך צמתים מדומים.

כדי להתחיל תהליך:

happy-process-start <node-name> <custom-process-name> <command>

לדוגמה, כדי להריץ ברציפות פינג בצומת בשם ThreadNode:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

בדוגמה לעיל, ContinuousPing הוא השם המוגדר על ידי המשתמש לתהליך בו משתמש Happy לניהול התהליך. השתמש happy-process-wait כדי להשעות את ביצוע התהליך והפסד happy-process-stop כדי להרוג את התהליך.

פלט התהליך הוא ב- /tmp . לדוגמה, לאחר התחלת תהליך ContinuousPing, בדוק את ספריית /tmp :

ls /tmp/happy*
/tmp/happy_018691_1524087014.192197_ContinuousPing.out

קובץ .out זה מכיל את הפלט לתהליך ContinuousPing.

שימוש sudo

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

Happy משתמש במשתנה של מערכת $SUDO בסביבת המערכת כדי להתקשר sudo . אם לא מוגדר $SUDO , Happy מבצע שיחת sudo רגילה.

תסריטים לפייתון

לאחר ההתקנה ניתן לייבא חבילות Happy Python לסביבת Python באמצעות הצהרת import הבאה:

import happy

מודולי פקודה נפרדים שנמצאים ב- /happy מיובאים כדלקמן:

import happy.HappyNodeAdd

כדי לאחזר אפשרויות מודול, התקשר לפונקציית option() . לדוגמה, כדי לאחזר אפשרויות מודול של HappyNodeAdd :

module options
import happy.HappyNodeAdd
options = happy.HappyNodeAdd.option()