כיצד להשתמש בתגים ב-Ansible

Kyzd Lhstms Btgym B Ansible



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

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







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



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

כדי להכניס את הדוגמאות המעשיות לתוכנה המתאימה, עלינו לעמוד בדרישות הבאות.



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





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

דוגמה 01: גישה למשימה בודדת ב-Ansible Playbook

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



[root@master ansible]# nano ansible_tags.yml

לאחר יצירה והשקה של ספר המשחקים ansible_tags.yml. כעת נתחיל לכתוב את הפקודות בספר המשחקים. ראשית, נעביר את המארחים שסופקו בפרמטר 'מארחים' בו נשתמש ב-'localhost'. לאחר מכן, נכתוב את הערך 'false' בפרמטר 'gather_facts', כך שלא נוכל לקבל את המידע הנוסף על המארח המקומי כאשר אנו מבצעים את ספר ההפעלה.

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

- מארחים:

- מארח מקומי
לאסוף_עובדות: שקר


משימות:
- שם: בדוק את קיום הקובץ x`
stat: path=./host.yml
הרשמה: fileExists
תגיות: check_file


- לנפות:
msg: '{{ 'קובץ קיים' אם fileExists.stat.exists else 'קובץ לא נמצא' }}'
תגיות: check_file


- שם: בדוק אם host.yml נגיש על ידי המשתמש הנוכחי
מעטפת: stat -c '%a' ./host.yml
הרשמה: accessPath
תגיות: check_access


- לנפות:
msg: '{{ 'קובץ נגיש' if (accessPath.stdout|int) < 660 else 'הקובץ אינו נגיש' }}'
תגיות: check_access

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

[root@master ansible]# ansible-playbook ansible_tags.yml –tags check_file

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

דוגמה 02: התעלם מתג מסוים ב-Ansible Playbook

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

[root@master ansible]# ansible-playbook ansible_tags.yml --skip-tags check_file

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

דוגמה 03: המשך תמיד להריץ את המשימה ב-Ansible Playbook

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

[root@master ansible]# nano ansible_tags.yml

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

- מארחים: כולם

לאסוף_עובדות: שקר


משימות:
- שם: בדוק את קיום הקובץ
stat: path=./host.yml
הרשמה: fileExists
delegate_to: localhost
תגיות: check_file


- לנפות:
msg: '{{ 'קובץ קיים' אם fileExists.stat.exists else 'קובץ לא נמצא' }}'
תגיות: check_file


- שם: בדוק אם host.yml נגיש על ידי המשתמש הנוכחי
מעטפת: stat -c '%a' ./host.yml
הרשמה: accessPath
delegate_to: localhost
תגיות: check_access


- לנפות:
msg: '{{ 'קובץ נגיש' if (accessPath.stdout|int) < 660 else 'הקובץ אינו נגיש' }}'
תגיות: check_access


- שם: מחק סיסמה מהמלאי
lineinfile:
נתיב: '{{inventory_file}}'
regexp: '\b{{item}}.*\b'
מצב: נעדר
delegate_to: localhost
להיות: שקר
תגיות: תמיד
with_items:
- ansible_password

לאחר מכן, ניצור את קובץ המלאי כדי לבנות את החיבור בין הבקר למארח היעד המרוחק. להלן הפקודה:

[root@master ansible]# nano host.yml

הנה קובץ המלאי שמכיל את המידע הקשור ל-'Linux_host' ב-Ansible.

את כל:

מארחים:
Linux_Host:
מארח פעיל: 192.168.3.229
ansible_user: ansible
ansible_password: ******
ansible_connection: ssh
ansible_port: 22

כדי לקבל את הפלט הרצוי, נריץ את הפקודה הבאה במסוף Ansible:

[root@master ansible]# ansible-playbook ansible_tags.yml --tags check_file -i host.yml

סיכום

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