הדרכה למתחילים - ספרי משחק, משתנים ומלאי

Beginner S Tutorial Ansible Playbooks



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

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







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



תנאים מוקדמים

אם תרצה לנסות את הדוגמאות במאמר זה,



1) עליך להתקין את Ansible במחשב שלך.
2) עליך להיות בעל מארח אובונטו/דביאן לפחות ומארח CentOS/RHEL 8 המוגדר לאוטומציה של Ansible.





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

יצירת מדריך פרויקטים

ראשית, צור ספריית פרויקטים ~/פרויקט/ עם הפקודה הבאה:

$mkdir -pv~/פּרוֹיֶקט/ספרי משחק

נווט אל ~/פרויקט/ הספרייה כדלקמן:

$CD~/פּרוֹיֶקט

קובץ מלאי בסיסי:

צור קובץ מלאי Ansible מארחים בספריית הפרויקטים עם הפקודה הבאה:

$ננומארחים

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

192.168.20.167
192.168.20.168
192.168.20.169
192.168.20.170

לאחר שתסיים עם שלב זה, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

אם ברצונך להשתמש בשמות DNS במקום בכתובות IP בקובץ המלאי, תוכל גם לעשות זאת.

אם אין לך שרת DNS עובד, תוכל להשתמש ב /etc/hosts קובץ במחשב שלך לרזולוציית DNS מקומית.

לפתרון DNS מקומי, פתח את /etc/hosts קובץ עם עורך טקסט ( ננו , במקרה שלי) כדלקמן:

$סודו ננו /וכו/מארחים

הקלד את כתובות ה- IP ואת שמות ה- DNS הרצויים שלך כדלקמן:

192.168.20.167 vm1.nodekite.com
192.168.20.168 vm2.nodekite.com
192.168.20.169 vm3.nodekite.com
192.168.20.170 vm4.nodekite.com

לאחר שתסיים עם שלב זה, לחץ על + איקס בא אחריו וגם ו .

פתח את קובץ המלאי של Ansible מארחים כדלהלן:

$ננומארחים

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

vm1.nodekite.com
vm2.nodekite.com
vm3.nodekite.com
vm4.nodekite.com

לאחר שתסיים, שמור את קובץ המלאי של המארחים על ידי לחיצה על + איקס בא אחריו וגם ו .

בודק קישוריות לכל המארחים

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

$אחראי-אנימארח את כולם-uאחראי-M פינג

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

ספר המשחקים האחראי הראשון שלך

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

$ננוספרי משחק/ping_all_hosts.yaml

הקלד את השורות הבאות ב- ping_all_hosts.yaml קובץ ספר השמעה אחראי:

- מארחים: כולם
משתמש: אחראי
משימות:
- שם: פינג כל המארחים
פינג:

פה,

מארחים: כולם - בוחר את כל המארחים מתוך קובץ המלאי מארחים .
משתמש: אחראי - מספר ל- Ansible ל- SSH למארחים בקובץ המלאי כ- אחראי מִשׁתַמֵשׁ.
משימות - כל המשימות שאנסיבל תבצע במארחים מפורטים כאן. לכל אחת מהמשימות יש בדרך כלל א שֵׁם ואופציה ספציפית למודול אחת או יותר.

ספר המשחקים ping_all_hosts.yaml יש לו רק משימה אחת, שמציינת את כל המארחים בקובץ המלאי מארחים . שם המשימה הוא פינג לכל המארחים והוא משתמש ב- פינג מודול.

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

לאחר שתסיים עם שלב זה, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

אתה רשאי להפעיל את ping_all_hosts.yaml ספר משחקים כדלקמן:

$ספר משחקים אחראי-אנימארח ספרי משחק/ping_all_hosts.yaml

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

קובץ תצורה אחראי פשוט

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

$ספר משחקים אחראי-אנימארח ספרי משחק/ping_all_hosts.yaml

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

לשם כך, צור קובץ תצורה חדש של Ansible ansible.cfg בשורש הפרויקט שלך כדלקמן:

$ננוansible.cfg

הקלד את השורות הבאות ב- ansible.cfg קוֹבֶץ:

[ברירות מחדל]
מלאי =./מארחים

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

תוכל להריץ את אותו חוברת Ansible כדלקמן:

$ספרי משחק למשחקים/ping_all_hosts.yaml

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

קיבוץ מארחים בקובץ המלאי

עד כה, הראיתי לך כיצד להפעיל מערך משימות (פלייבוק) בכל המארחים בקובץ המלאי. אבל מה אם אתה רוצה להריץ מערך משימות בחלק מהמארחים וערכת משימות נוספת במארחים אחרים? ניתן לקבץ את המארחים בקובץ המלאי ולהריץ משימות שונות בקבוצות המארחים.

בחלק זה, אראה לך כיצד לקבץ מארחים בקובץ המלאי וכיצד לעבוד עם קבוצות מארחים.

ראשית, פתח את קובץ המלאי מארחים כדלהלן:

$ננומארחים

הקלד את השורות הבאות ב- מארחים קובץ מלאי:

[debian10]
vm1.nodekite.com
vm2.nodekite.com
[centos8]
vm3.nodekite.com
vm4.nodekite.com

כאן יצרתי שתי קבוצות מארחות: debian10 ו centos8 .

בתוך ה debian10 קבוצה, יש לי שני מארחים: vm1.nodekite.com ו vm2.nodekite.com

בתוך ה centos8 קבוצה, יש לי שני מארחים: vm3.nodekite.com ו vm4.nodekite.com

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

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

צור ספר משחקים ping_debian10_hosts.yaml בתוך ה ספרי משחק/ הספרייה כדלקמן:

$ננוספרי משחק/ping_debian10_hosts.yaml

הקלד את השורות הבאות ב- ping_debian10_hosts.yaml ספר משחקים אחראי:

- מארחים: debian10
משתמש: אחראי
משימות:
- שם: פינג כל דביאן10מארחים
פינג:

במקום מארחים: כולם , הוספתי מארחים: debian10 פה. debian10 היא הקבוצה המארחת. ספר משחקים זה יפעל רק על המארחים ב- debian10 קבוצת מארחים.

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

הפעל את ספר המשחקים באופן הבא:

$ספרי משחק למשחקים/ping_debian10_hosts.yaml

כפי שאתה יכול לראות, רק המארחים ב- debian10 קבוצת המארחים מצלצלים.

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

$ננוספרי משחק/ping_centos8_hosts.yaml

הקלד את השורות הבאות ב- ping_centos8_hosts.yaml ספר משחקים אחראי:

- מארחים: centos8
משתמש: אחראי
משימות:
- שם: פינג כל CentOS8מארחים
פינג:

באותו אופן, הוספתי מארחים: centos8 פה. centos8 היא הקבוצה המארחת. ספר משחקים זה יפעל רק על המארחים ב- centos8 קבוצת מארחים.

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

הפעל את ספר המשחקים באופן הבא:

$ספרי משחק למשחקים/ping_centos8_hosts.yaml

כפי שאתה יכול לראות, רק המארחים ב- centos8 קבוצת המארחים מצלצלים.

סוגי משתנים אחידים

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

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

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

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

עדיפות משתנה אחראי

עדיפות המשתנה של Ansible היא : משתני שורת הפקודה > משתני מארח > משתני קבוצה

אם תגדיר את אותו משתנה כמו משתנה המארח ומשתנה הקבוצה, המשתנה המארח יוחל.

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

עבודה עם משתני עובדות אחראיות

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

תוכל לרשום את כל המשתנה Facts Ansible Facts של המארחים שב- מארחים קובץ המלאי כדלקמן:

$אחראי לכולם-uאחראי-Mלהכין

כפי שאתה יכול לראות, כל משתני העובדות האחראיות מפורטים בפורמט JSON. זו רשימה ארוכה מאוד.

מכיוון שהרשימה די ארוכה, תוכל לפתוח אותה באמצעות תוכנית ביפר כגון פָּחוּת כדלהלן:

$אחראי לכולם-uאחראי-Mלהכין| פָּחוּת

כעת, תוכל לגלול את הפלט למעלה, למטה, שמאלה וימינה לפי הצורך.

תוכל גם לחפש שמות משתנים מהעמוד. לשם כך הקש על / מקש במקלדת שלך. לאחר מכן הקלד את מחרוזת החיפוש ( שם מארח במקרה שלי) ולחץ .

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

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

צור ספר משחקים חדש print_variable1.yaml כדלהלן:

$ננוספרי משחק/print_variable1.yaml

הקלד את השורות הבאות ב- print_variable1.yaml קוֹבֶץ:

- מארחים: כולם
משתמש: אחראי
משימות:
- הדפס שםשם מארחמכל המארחים
לנפות:
הודעה:'{{ansible_hostname}}'

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

הודעה הוא הפרמטר הנדרש היחיד של לנפות מודול. ה הודעה parameter מקבל מחרוזת במרכאות, שהיא ההודעה שתודפס בקונסולה.

פה, {{ שם משתנה }} פורמט משמש לגישה למשתנה. במקרה הזה, {{ansible_hostname}} משמש להדפסת ansible_hostname משתנה של כל אחד מהמארחים בקובץ המלאי.

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

תוכל גם לגשת למשתנה עובדות Ansible כ ansible_facts [variable_name] . אז ה ansible_hostname משתנה יהפוך ansible_facts [hostname] .

נוכל לכתוב מחדש את print_variable1.yaml ספר משחקים כזה גם כן. נקבל את אותו הפלט.

- מארחים: כולם
משתמש: אחראי
משימות:
- הדפס שםשם מארחמכל המארחים
לנפות:
הודעה:'{{ansible_facts [' variable_name ']}}'

הפעל את ספר המשחקים print_variable1.yaml כדלהלן:

$ספרי משחק למשחקים/print_variable1.yaml

כפי שאתה יכול לראות, שם המארח של כל אחד מהמארחים בקובץ המלאי מודפס במסוף.

הבה נדפיס כעת את כתובת ה- IPv4 המוגדרת כברירת מחדל של כל מארח יחד עם שם המארח. כפי שאתה יכול לראות, ניתן לגשת לכתובת IPv4 המוגדרת כברירת מחדל של המארח באמצעות כתובת רכושו של ansible_default_ipv4 לְהִתְנַגֵד.

צור ספר משחקים חדש print_variable2.yaml כדלהלן:

$ננוספרי משחק/print_variable2.yaml

הקלד את השורות הבאות ב- print_variable2.yaml קוֹבֶץ:

- מארחים: כולם
משתמש: אחראי
משימות:
- הדפס שםשם מארחמכל המארחים
לנפות:
הודעה:'{{ansible_hostname}} - {{ansible_default_ipv4.address}}'

ספר המשחקים זהה לקודם. ההבדל היחיד הוא המשתנה החדש {{ansible_default_ipv4.address}} בתוך ה הודעה אפשרות של לנפות מודול.

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

הפעל את print_variable2.yaml ספר משחקים כדלקמן:

$ספרי משחק למשחקים/print_variable2.yaml

כפי שאתה יכול לראות, כתובת ברירת המחדל של IPv4 ושם המארח של המארחים מודפסים במסוף.

אז, כך אתה עובד עם משתני עובדות אחראיות.

הגדרת משתנים המוגדרים על ידי משתמש משורת הפקודה:

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

ראשית, צור ספר משחקים חדש print_variable3.yaml כדלהלן:

$ננוספרי משחק/print_variable3.yaml

הקלד את השורות הבאות ב- print_variable3.yaml קוֹבֶץ:

- מארחים: כולם
משתמש: אחראי
משימות:
- הדפס שםפקודהמשתנה קו
לנפות:
הודעה:'ברוך הבא {{username}}'

הנה, השתמשתי ב- לנפות מודול להדפסת ההודעה ברוך הבא {{שם משתמש}} . שם משתמש הוא משתנה שיוחלף כאשר נריץ את ספר המשחקים.

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

הפעל את ספר המשחקים print_variable3.yaml כדלהלן:

$ספר משחקים אחראי 'שם משתמש = בוב'ספרי משחק/print_variable3.yaml

הערה: פה, האפשרות משמשת להעברת א שם משתמש משתנה עם הערך בוב לספר המשחקים print_variable3.yaml משורת הפקודה.

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

הבה נגלה כעת כיצד להעביר משתנים מרובים משורת הפקודה.

צור ספר משחקים חדש print_variable4.yaml כדלהלן:

$ננוספרי משחק/print_variable4.yaml

הקלד את השורות הבאות ב- print_variable4.yaml קוֹבֶץ:

- מארחים: כולם
משתמש: אחראי
משימות:
- שם: הדפס משתנים שהוגדרו על ידי משתמש
לנפות:
הודעה:'שם משתמש = {{שם משתמש}} http_port = {{http_port}}'

ספר המשחקים אמור להיות מוכר לך מאוד כרגע. כל מה שהוא עושה זה להדפיס את 2 המשתנים שם משתמש ו http_port על הקונסולה.

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

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

$ ansible-playbook 'שם משתמש = בוב' 'http_port = 8080'
ספרי משחק/print_variable4.yaml

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

$ ansible-playbook 'שם משתמש = בוב http_port = 8080'
ספרי משחק/print_variable4.yaml

כפי שאתה יכול לראות, שם משתמש ו http_port משתנים מודפסים על הקונסולה.

עבודה עם משתנים קבוצתיים המוגדרים על ידי משתמשים

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

ראשית, פתח את שלך מארחים קובץ המלאי כדלקמן:

$ננומארחים

הקלד את השורות הבאות ב- מארחים קובץ מלאי:

[debian10]
vm1.nodekite.com
vm2.nodekite.com
[debian10: vars]
שם משתמש = לילי
http_port =4343
[centos8]
vm3.nodekite.com
vm4.nodekite.com
[centos8: vars]
שם משתמש = בוב
http_port =7878

כפי שאתה יכול לראות, יצרתי קטע חדש [debian10: vars] ל debian10 קבוצת המארחים והוסיפה את המשתנים ( שם משתמש ו http_port ) ל debian10 קבוצה מארחת שם.

באותו אופן, יצרתי קטע חדש [centos8: vars] ל centos8 קבוצת המארחים והוסיפה את המשתנים ( שם משתמש ו http_port ) ל centos8 קבוצה מארחת שם.

לאחר שתסיים, שמור את מארחים קובץ מלאי על ידי לחיצה על + איקס בא אחריו וגם ו .

הפעל את print_variable4.yaml חוברות משחק כדלקמן:

$ספרי משחק למשחקים/print_variable4.yaml

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

עבודה עם משתני מארח המוגדרים על ידי משתמשים

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

ראשית, פתח את מארחים קובץ המלאי כדלקמן:

$ננומארחים

כדי להוסיף משתנים למארח ספציפי (נניח, vm1.nodekite.com ), פשוט הוסף רווח/לשונית אחרי שם ה- IP/DNS המארח והקלד את המשתנים שלך, כפי שמוצג בצילום המסך למטה.

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

לאחר שתסיים, שמור את קובץ המלאי על ידי לחיצה על + איקס בא אחריו וגם ו .

הפעל את print_variable4.yaml חוברות משחק כדלקמן:

$ספרי משחק למשחקים/print_variable4.yaml

כפי שאתה יכול לראות, המשתנים מוגדרים רק עבור vm1.nodekite.com מנחה. למארחים האחרים מיושמים עליהם משתני קבוצה.

יצירת קבצי מלאי במהירות עם טווחים

תוכל להשתמש בטווחים ליצירת קבצי מלאי Ansible במהירות אם כתובות ה- IP המארחות שלך או שמות ה- DNS עקביים (כלומר, יש להם פורמט ספציפי).

בדוגמאות הקודמות השתמשתי במארחים vm1.nodekite.com , vm2.nodekite.com , vm3.nodekite.com ו vm4.nodekite.com . במקום להקליד 4 שורות, יכולתי פשוט להקליד vm [1: 4] .nodekite.com בקובץ המלאי.

להתנסות בטווחים, פתח את מארחים קובץ המלאי כדלקמן:

$ננומארחים

הסר את כל המארחים והמשתנים מקבצי המלאי.

כעת אנו עשויים להחליף vm1.nodekite.com ו vm2.nodekite.com עם vm [1: 2] .nodekite.com ל debian10 קבוצת המארחים כדלקמן.

באותו אופן, אנו יכולים להחליף vm3.nodekite.com ו vm4.nodekite.com עם vm [3: 4] .nodekite.com ל centos8 קבוצת מארחים.

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

הפעל את ping_all_hosts.yaml כדלהלן:

$ספרי משחק למשחקים/ping_all_hosts.yaml

כפי שאתה יכול לראות, טווחי המארח הורחבו כאשר הפעלתי את ספר המשחקים.

אחסון משתנים בקבצים שונים

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

כברירת מחדל, Ansible מחפש משתנים קבוצתיים ב- group_vars / ספריית המשתנים והמארחים ב- host_vars / מַדרִיך.

אז, צור את group_vars / ו host_vars / הספרייה כדלקמן:

$mkdir -pv {מארח, קבוצה}_של מי

כדי להגדיר משתני קבוצה עבור debian10 קבוצת מארח, צור קובץ debian10 (זהה לשם הקבוצה) ב- group_vars / הספרייה כדלקמן:

$ננוgroup_vars/debian10

הקלד את המשתנים שלך כדלקמן:

שם משתמש: לילי
http_port: 4343

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס ואחריו Y ו- .

באותו אופן, כדי להגדיר משתני קבוצה עבור centos8 קבוצת מארח, צור קובץ centos8 (זהה לשם הקבוצה) ב- group_vars / הספרייה כדלקמן:

$ננוgroup_vars/centos8

הקלד את המשתנים שלך כדלקמן:

שם משתמש: בוב
http_port: 7878

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס ואחריו Y ו- .

הפעל את print_variable4.yaml ספר משחקים כדלקמן:

$ספרי משחק למשחקים/print_variable4.yaml

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

כדי להגדיר משתני מארח עבור המארח vm1.nodekite.com , צור קובץ vm1.nodekite.com (זהה לשם המארח או כתובת ה- IP) ב- host_vars / הספרייה כדלקמן:

$ננוvm1.nodekite.com

הקלד את משתני המארח שלך כדלקמן:

שם משתמש: אלכס
http_port: 7788

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס ואחריו Y ו- .

הפעל את print_variable4.yaml ספר משחקים כדלקמן:

$ ansible-playbook playbooks/print_variable4.yaml
[

כפי שאתה יכול לראות, משתני המארח מוגדרים כראוי עבור המארח vm1.nodekite.com .

עבודה עם לולאות ב- Ansible

בחלק זה, אראה לך כיצד להשתמש בלולאות ב- Ansible.

ראשית, צור ספר משחקים חדש loop1.yaml בתוך ה ספרי משחק/ הספרייה כדלקמן:

$ננוספרי משחק/loop1.yaml

הקלד את השורות הבאות ב- loop1.yaml ספר משחקים:

- מארחים: כולם
משתמש: אחראי
משימות:
- שם: הדפסת רשימת משתמשים
לנפות:
הודעה:'משתמש: {{item}}'
עם_פריטים:
- אלכס
- בוב
- לילי

כאן, יש לי משימה אחת שמדפיסה רשימת משתמשים המשתמשים בלולאה.

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

עם_פריטים:
- אלכס
- בוב
- לילי

אתה ניגש לערך האיטרציה הנוכחית באמצעות פריט מִשְׁתַנֶה.

לנפות:
הודעה:'משתמש: {{item}}'

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

הפעל את loop1.yaml ספר משחקים כדלקמן:

$ספרי משחק למשחקים/loop1.yaml

כפי שאתה יכול לראות, אותה משימה רצה עבור כל פריט בכל מארח. אז הלולאה עובדת.

עבודה עם תנאים ב- Ansible

אם ברצונך להריץ משימות על סמך תנאים מסוימים, סעיף זה הוא בשבילך.

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

$ננוספרי משחק/מצב 1. yaml

הקלד את השורות הבאות ב- מצב 1. yaml ספר משחקים:

- מארחים: כולם
משתמש: אחראי
משימות:
- שם: הפעל משימה זו רק על דביאן
לנפות:
הודעה:'משימה זו פועלת על דביאן'
מתי: ansible_facts['הפצה']=='דביאן'

פה,

ansible_facts ['distribution'] == 'Debian' משמש כדי לבדוק אם הפצה הוא דביאן . המשימה תפעל רק אם ההפצה היא Debian.

ה ansible_facts ['הפצה'] משמש לגישה למשתנה Facts Ansible הפצה אחראית . תוכל גם לבדוק אם יש גרסת הפצה באמצעות ansible_distribution_major_version מִשְׁתַנֶה.

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

הפעל את מצב 1. yaml ספר משחקים כדלקמן:

$ספרי משחק למשחקים/מצב 1. yaml

כפי שאתה יכול לראות, המשימה רצה רק על מארחי דביאן. המשימה לא הופעלה על מארחי CentOS.

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

צור ספר משחקים חדש מצב 2. yaml כדלהלן:

$ננוספרי משחק/מצב 2. yaml

הקלד את השורות הבאות ב- מצב 2. yaml קוֹבֶץ:

- מארחים: כולם
משתמש: אחראי
משימות:
- שם: הפעל משימה זו רק על דביאן10
לנפות:
הודעה:'משימה זו פועלת ב- Debian 10'
מתי: ansible_facts['הפצה']=='דביאן'
וסיבות_אפשרויות['distribution_major_version']=='10'

כאן, המשימה תפעל רק אם ההפצה היא Debian ( ansible_facts ['distribution'] == 'Debian' ) והגרסה היא 10 ( ansible_facts ['distribution_major_version'] == '10' ). אם שני התנאים נכונים, המשימה תפעל. כמו כן, המשימה לא תפעל.

השתמשתי ב- ו מילת מפתח כדי לבדוק אם שני התנאים נכונים כאן. אם אתה רוצה לבדוק אם אחד מהתנאים הוא נכון, תוכל להשתמש ב אוֹ מילת מפתח במקום.

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

הפעל את ספר המשחקים מצב 2. yaml כדלהלן:

$ספרי משחק למשחקים/מצב 2. yaml

כפי שאתה יכול לראות, המשימה רצה רק על מארחי Debian 10.

תן לנו לשנות את ספר המשחקים מצב 2. yaml כדי להריץ את המשימה רק על מארחי Debian 8 כדלקמן.

כפי שאתה יכול לראות, כל המארחים דילגו מכיוון שאין לי מארחי Debian 8 בקובץ המלאי.

עבודה עם מודול Ansible apt

ה מַתְאִים מודול של Ansible משמש להתקנת חבילת תוכנה ספציפית במארחי אובונטו/דביאן. הבה נראה כיצד להשתמש במודול זה.

ראשית, צור ספר משחקים חדש apt1.yaml בתוך ה ספרי משחק/ הספרייה כדלקמן:

$ננוספרי משחק/apt1.yaml

הקלד את השורות הבאות ב- apt1.yaml ספר משחקים:

- מארחים: debian10
משתמש: אחראי
להפוך: נכון
משימות:
- שם: התקן apache2
מַתְאִים:
שם: apache2
מדינה: האחרונה

ה מַתְאִים המודול דורש רק את שֵׁם של החבילה שברצונך להתקין/לשדרג/להסיר ואת מדינה של החבילה.

כאן, אני מנסה להתקין את apache2 חבילה ( שם: apache2 ) במארחי דביאן 10 שלי. כשאני מנסה להתקין חבילה וגם לשדרג אותה אם קיימת גרסה חדשה, ה- מדינה צריך להיות הכי מאוחר .

מדינה מקבלת גם את האפשרויות הבאות:

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

שימו לב שהוספתי להפוך: נכון בספר המשחקים. זה ייתן את אחראי הרשאות סודו למשתמש לשינוי מבנה מערכת הקבצים (כלומר התקן/שדרג/הסר חבילות). לְלֹא להפוך: נכון , ה מַתְאִים המודול לא יוכל להתקין את apache2 חֲבִילָה.

לאחר שתסיים, שמור את ספר ההפעלה על ידי לחיצה על + איקס בא אחריו וגם ו .

הפעל את apt1.yaml ספר משחקים כדלקמן:

$ספרי משחק למשחקים/apt1.yaml

כפי שאתה יכול לראות, ספר ההפעלה פעל בהצלחה על מארחי Debian 10.

כפי שאתה יכול לראות, apache2 החבילה מותקנת במארחי Debian 10 שלי.

עבודה עם מודול Ansible dnf/yum

ה dnf ו יאם מודול של Ansible משמש להתקנת חבילת תוכנה ספציפית על מארחי CentOS/RHEL. תוכל להשתמש במודול זה באותו אופן בו עשית את מַתְאִים המודול בחלק הקודם של מאמר זה.

שניהם ה dnf ו יאם המודולים מקבלים את אותם הפרמטרים. תוכל להשתמש ב dnf מודול על מארחי CentOS/RHEL 8, ו- יאם ב- CentOS/RHEL 7 ומעלה.

הבה נבחן כעת דוגמה של מודול זה.

ראשית, צור ספר משחקים חדש dnf1.yaml בתוך ה ספרי משחק/ הספרייה כדלקמן:

$ננוספרי משחק/dnf1.yaml

הקלד את השורות הבאות ב- dnf1.yaml ספר משחקים:

- מארחים: centos8
משתמש: אחראי
להפוך: נכון
משימות:
- שם: התקן חבילת httpd
dnf:
שם: httpd
מדינה: האחרונה

ה dnf ו יאם המודול דורש רק את שֵׁם של החבילה שברצונך להתקין/לשדרג/להסיר ואת מדינה של החבילה.

כאן, אני מנסה להתקין את httpd חבילה ( שם: httpd ) במארחי CentOS 8 שלי. כשאני מנסה להתקין חבילה, ואני גם רוצה לשדרג אותה אם קיימת גרסה חדשה, ה- מדינה צריך להיות הכי מאוחר .

מדינה מקבל את האפשרויות הבאות:

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

שימו לב שהוספתי להפוך: נכון בספר המשחקים. זה נותן את אחראי הרשאות סודו למשתמש לשינוי מבנה מערכת הקבצים (כלומר התקן/שדרג/הסר חבילות). לְלֹא להפוך: נכון , ה מַתְאִים המודול לא יוכל להתקין את httpd חֲבִילָה.

לאחר שתסיים, שמור את ספר ההפעלה על ידי לחיצה על + איקס בא אחריו וגם ו .

הפעל את dnf1.yaml ספר משחקים כדלקמן:

$ספרי משחק למשחקים/dnf1.yaml

כפי שאתה יכול לראות, ספר ההפעלה פעל בהצלחה על מארח CentOS 8.

עבודה עם מודול שירות Ansible

ה שֵׁרוּת המודול של Ansible משמש להפעלה, עצירה, הפעלה מחדש, הפעלה (הוספת שירות להפעלה) והשבתת (הסרת שירות מההפעלה) בשירותי המארחים שלך.

בחלקים קודמים הראיתי לך כיצד להתקין את חבילת שרת HTTP של Apache באמצעות Ansible מַתְאִים , dnf ו יאם מודולים. הבה נוודא כעת כי שירות שרת ה- HTTP של Apache פועל והתווסף להפעלת המערכת.

אעבוד עם מארחי דביאן 10 שלי. עם זאת, תוכל לעבוד עם מארחי CentOS 8, אם תרצה. פשוט התאם את ספר המשחקים בהתאם.

ראשית, צור ספר משחקים Ansible חדש apt2.yaml כדלהלן:

$ננוספרי משחק/apt2.yaml

הקלד את השורות הבאות ב- apt2.yaml ספר משחקים:

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

הנה, הוספתי משימה חדשה, הפעל את שירות apache2 .

שם: apache2 - השירות שאני עובד עליו הוא apache2 .

מדינה: התחיל - השירות חייב להיות פועל.

מופעל: נכון - יש להוסיף את השירות להפעלת המערכת.

ה מדינה פרמטר מקבל ערכים אחרים.

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

הפעל את ספר המשחקים apt2.yaml כדלהלן:

$ספרי משחק למשחקים/apt2.yaml

כפי שאתה יכול לראות, ספר ההפעלה פעל בהצלחה.

כפי שאתה יכול לראות, apache2 השירות פועל במארחי Debian 10 שלי.

עבודה עם מודול העתקת Ansible

האחראי עותק המודול משמש בעיקר להעתקת קבצים מהמחשב שלך למארחים מרוחקים.

בחלק הקודם התקנתי את שרת האינטרנט Apache 2 במארחי Debian 10 שלי. תן לנו כעת להעתיק א index.html קובץ לשורש האינטרנט של מארחי Debian 10.

ראשית, צור ספרייה חדשה קבצים/ כדלהלן:

$mkdir -vקבצים

צור קובץ חדש index.html בתוך ה קבצים/ הספרייה כדלקמן:

$ננוקבצים/index.html

הקלד את השורות הבאות ב- index.html קוֹבֶץ:


< html >
< רֹאשׁ >
< כותרת >שרת אינטרנט מאת Ansible</ כותרת >
</ רֹאשׁ >
< גוּף >
< h1 >ברוכים הבאים ל- LinuxHint</ h1 >
< עמ >שרת אינטרנט זה נפרס עם Ansible.</ עמ >
</ גוּף >
</ html >

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

צור ספר משחקים חדש של Ansible apt3.yaml כדלהלן:

$ננוספרי משחק/apt3.yaml

הקלד את השורות הבאות ב- apt3.yaml קוֹבֶץ:

- מארחים: debian10
משתמש: אחראי
להפוך: נכון
משימות:
- שם: התקן apache2
מַתְאִים:
שם: apache2
מדינה: האחרונה
- שם: העתק index.html לשרת
עותק:
src: ../קבצים/index.html
dest:/איפה/www/html/index.html
מצב: 0644
הבעלים: www-data
קבוצה: www-data
- שם: הפעל את שירות apache2
שֵׁרוּת:
שם: apache2
מדינה: התחיל
מופעל: נכון

הנה, המשימה העתק את index.html לשרת מעתיק את index.html מ ה קבצים/ ספרייה אל / var / www / html / מדריך המארחים של Debian 10.

src: ../files/index.html - נתיב קובץ המקור.
dest: /var/www/html/index.html - נתיב קובץ היעד.
מצב: 0644 - ההרשאות למשתמש הקובץ (6 - קריאה וכתיבה), קבוצה (4 - קריאה), ואחרות (4 - קריאה).
הבעלים: www-data - הגדר את בעל הקובץ ל- www-data .
קבוצה: www-data - הגדר את קבוצת הקובץ ל- www-data .

לאחר שתסיים, שמור את הקובץ על ידי לחיצה על + איקס בא אחריו וגם ו .

הפעל את apt3.yaml ספר משחקים כדלקמן:

$ספרי משחק למשחקים/apt3.yaml

כפי שאתה יכול לראות, המשימה העתק את index.html לשרת מצליח.

כפי שאתה יכול לראות, index.html הקובץ הועתק למארחי Debian 10.

כפי שאתה יכול לראות, שרת האינטרנט של Debian 10 משרת את index.html דף שהעתקתי זה עתה למארחי דביאן 10.

אז אלה היסודות של Ansible. תוכל ללמוד עוד על Ansible על ידי קריאת התיעוד הרשמי של Ansible. תודה שקראת מאמר זה.