שגיאת התעלמות של Ansible

Sgy T Ht Lmwt Sl Ansible



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

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







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



דרכים להתעלם מהשגיאות ב-Ansible

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



1. שימוש בפקודה Ignore_Errors=True





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

2. שימוש במצב בדיקה ב-Ansible



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

3. שימוש בפקודה Failed=When ב-Ansible Playbook

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

תנאים מוקדמים להתעלם מהשגיאות ב-Ansible

כלי התצורה של Ansible חייב לעמוד בקריטריונים הדרושים כדי לכלול את הדוגמה הקונקרטית:

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

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

דוגמה: שימוש בפקודה Ignore_Errors=True

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

[ שורש @ מאסטר אנסיבל ] # nano ignore_errors.yml

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

לאחר מכן, אנו מתחילים לרשום כל משימה שברצוננו להשלים תחת האפשרות 'משימות'. במשימה הראשונה, אנו מציגים את המסמך שאינו קיים בספריית Ansible. ראשית, אנו מעבירים את כותרת המשימה אותה אנו רוצים ליישם. לאחר מכן, אנו משתמשים באפשרות הפקודה ומאחסנים את מסמך הטקסט הלא קיים ומשתמשים ב-'ls' כדי שנוכל לבצע את הפקודה במשימה הראשונה. לאחר המשימה הראשונה, אנו משתמשים בפקודה ignore_errors=true כך שאם המשימה שמעל להצהרת ignore היא כשל, היא מתעלמת מהמשימה ועוברת למשימה הבאה ומבצעת אותה.

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

- מארחים: localhost
אסוף_עובדות: שֶׁקֶר
משימות:
- שם: רשום לא קיים קוֹבֶץ
פקודה: ls non-existent.txt
ignore_errors: נָכוֹן

- שם: לְהַמשִׁיך משימה לאחר כישלון
לנפות:
הודעה: 'המשך משימה לאחר כישלון'

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

[ שורש @ מאסטר אנסיבל ] # ansible-playbook ignore_errors.yml

לאחר ביצוע הפקודה האמורה, נקבל את הפלט הבא. כפי שאתה רואה, המשימה הראשונה שמפרטת קובץ לא קיים מציגה כשל. אבל המשימה השנייה מבוצעת בהצלחה מכיוון שהתעלמנו מהמשימה הראשונה על ידי שימוש ב- ignore_error=true בספר המשחקים.

סיכום

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