10.2.3. מדינות מלח ותכונות אחרות
בעוד שביצוע מרחוק הוא אבן בניין חשובה, הוא רק חלק מזערי ממה ש-SaltStack יכול לעשות.
בעת הגדרת מכונה חדשה, אתה מריץ לעתים קרובות פקודות ובדיקות רבות כדי לקבוע את פרטי המערכת לפני ההתקנה. פעולות אלו ניתנות לפורמאליות בתבניות תצורה הניתנות לשימוש חוזר הנקראות תיקי מדינה. לאחר מכן ניתן לבצע את הפעולות המתוארות בקבצי מצב עם יחיד state.apply פקודת מלח.
כדי לחסוך זמן, אתה יכול להסתמך על קבצי מצב רבים מוכנים לשימוש שנוצרו על ידי הקהילה ומופצים ב"נוסחאות מלח":
➨ https://docs.saltstack.com/en/latest/topics/development/conventions/formulas. html
ישנן תכונות רבות נוספות שניתן לשלב:
• ביצוע מתוזמן של פעולות
• הגדרת פעולות בתגובה לאירועים שהופעלו על ידי מיניונים
• איסוף נתונים ממיניונים
• תזמור של רצף פעולות על פני מספר מיניונים
• החלת מצבים על SSH מבלי להתקין את שירות salt-minion
• אספקת מערכות על תשתיות ענן והבאתן לניהול
• ועוד
SaltStack הוא די עצום ואנחנו לא יכולים לכסות את כל התכונות כאן. למעשה, ישנם ספרים המוקדשים כולו ל-SaltStack וגם התיעוד המקוון נרחב מאוד. בדוק את זה אם אתה רוצה ללמוד עוד על התכונות שלו:
➨ https://docs.saltstack.com/en/latest/
אם אתה מנהל מספר לא מבוטל של מכונות, כדאי לך ללמוד עוד על SaltStack מכיוון שאתה יכול לחסוך כמות משמעותית של זמן בעת פריסת מכונות חדשות ותוכל לשמור על תצורה קוהרנטית בכל הרשת שלך.
כדי לתת לכם טעימה מאיך זה נראה לעבוד עם קבצי מצב, נסקור דוגמה פשוטה: כיצד להפעיל את מאגר APT ולהתקין חבילה שאתה יוצר בסעיף 10.3.3, "יצירת מאגר חבילות עבור APT" [עמוד 269] וסעיף 10.3.2, "יצירת חבילות תצורה" [עמוד 263]. כמו כן, תרשום מפתח SSH בחשבון של root כדי שתוכל להתחבר מרחוק במקרה של בעיות.
כברירת מחדל, קבצי מצב מאוחסנים ב /srv/salt על המאסטר; הם קבצים מובנים של YAML עם א .sls סיומת. בדיוק כמו להפעלת פקודות, החלת מצב מסתמכת על מודולי מצב רבים:
➨ https://docs.saltstack.com/en/latest/topics/tutorials/starting_states.html
➨ https://docs.saltstack.com/en/latest/ref/states/all/
/srv/salt/offsec.sls הקובץ יקרא לשלושה מהמודולים האלה:
offsec_repository: pkgrepo.managed:
- שם: deb http://pkgrepo.offsec.com offsec-internal main
- קובץ: /etc/apt/sources.list.d/offsec.list
- key_url: salt://offsec-apt-key.asc
- require_in:
- pkg: offsec-defaults
offsec-defaults: pkg.installed
ssh_key_for_root: ssh_auth.present:
- משתמש: root
- שם: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
offsec_repository: pkgrepo.managed:
- שם: deb http://pkgrepo.offsec.com offsec-internal main
- קובץ: /etc/apt/sources.list.d/offsec.list
- key_url: salt://offsec-apt-key.asc
- require_in:
- pkg: offsec-defaults
offsec-defaults: pkg.installed
ssh_key_for_root: ssh_auth.present:
- משתמש: root
- שם: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
השמיים offsec_repository המדינה מסתמכת על pkgrepo מודול המדינה. הדוגמה משתמשת ב- הצליח
פונקציה במודול המצב הזה כדי לרשום מאגר חבילות. עם ה key_url תכונה, אתה
הודע למלח שניתן להביא את מפתח ה-GPG (משוריין ASCII) הנדרש כדי לאמת את החתימה של המאגר /srv/salt/offsec-apt-key.asc על אמן המלח. ה דורש_ב תכונה מבטיחה שמצב זה מעובד לפני ה- offsec-defaults, מאחר שהאחרון צריך את התצורה הנכונה של המאגר כדי להיות מסוגל להתקין את החבילה.
השמיים offsec-defaults state מתקין את החבילה באותו שם. זה מראה ששם המפתח הוא לעתים קרובות ערך חשוב עבור מדינות, אם כי תמיד ניתן לעקוף אותו באמצעות a שם תכונה (כפי שנעשה עבור המדינה הקודמת). עבור מקרים פשוטים כמו זה, זה גם קריא וגם תמציתי.
המדינה האחרונה (ssh_key_for_root) מוסיף את מפתח ה-SSH שניתן ב- שם מייחס ל /root/.ssh/ authorized_keys (משתמש היעד מוגדר ב- המשתמש תְכוּנָה). שימו לב שקיצרנו כאן את המפתח לקריאות, אבל כדאי לשים את המפתח המלא בתכונת name.
בשלב הבא ניתן להחיל את קובץ המצב הזה על מיניון נתון:
שרת# מלח קאלי-מצב שריטה.להחיל offsec
kali-scratch:
----------
מזהה: offsec_repository פונקציה: pkgrepo.managed
שם: deb http://pkgrepo.offsec.com offsec-internal תוצאה ראשית: נכון
הערה: חבילה מוגדרת 'deb http://pkgrepo.offsec.com offsec-internal
➥ רָאשִׁי'
התחיל: 06:00:15.767794
משך: 4707.35 אלפיות השנייה שינויים:
----------
ריפו:
deb http://pkgrepo.offsec.com offsec-internal main
----------
מזהה: offsec-defaults פונקציה: pkg.installed
תוצאה: נכון
הערה: החבילות הבאות הותקנו/עודכנו: offsec-defaults התחילו: 06:00:21.325184
משך: 19246.041 אלפיות השנייה שינויים:
----------
offsec-defaults:
----------
חָדָשׁ:
1.0
ישן:
----------
מזהה: ssh_key_for_root פונקציה: ssh_auth.present
שרת# מלח קאלי-מצב שריטה.להחיל offsec
kali-scratch:
----------
מזהה: offsec_repository פונקציה: pkgrepo.managed
שם: deb http://pkgrepo.offsec.com offsec-internal תוצאה ראשית: נכון
הערה: חבילה מוגדרת 'deb http://pkgrepo.offsec.com offsec-internal
➥ רָאשִׁי'
התחיל: 06:00:15.767794
משך: 4707.35 אלפיות השנייה שינויים:
----------
ריפו:
deb http://pkgrepo.offsec.com offsec-internal main
----------
מזהה: offsec-defaults פונקציה: pkg.installed
תוצאה: נכון
הערה: החבילות הבאות הותקנו/עודכנו: offsec-defaults התחילו: 06:00:21.325184
משך: 19246.041 אלפיות השנייה שינויים:
----------
offsec-defaults:
----------
חָדָשׁ:
1.0
ישן:
----------
מזהה: ssh_key_for_root פונקציה: ssh_auth.present
שם: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali תוצאה: נכון
הערה: מפתח המארח המורשה AAAAB3NzaC1yc2...89C4N עבור שורש המשתמש נוסף התחל: 06:00:40.582539
משך: 62.103 אלפיות השנייה שינויים:
---------- AAAAB3NzaC1yc2...89C4N:
חדש
תקציר לקאלי-שריטה
------------
הצליח: 3 (שונה=3)
נִכשָׁל: 0
------------
סה"כ מצבי ריצה: 3
זמן ריצה כולל: 24.015 שניות
שם: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali תוצאה: נכון
הערה: מפתח המארח המורשה AAAAB3NzaC1yc2...89C4N עבור שורש המשתמש נוסף התחל: 06:00:40.582539
משך: 62.103 אלפיות השנייה שינויים:
---------- AAAAB3NzaC1yc2...89C4N:
חדש
תקציר לקאלי-שריטה
------------
הצליח: 3 (שונה=3)
נִכשָׁל: 0
------------
סה"כ מצבי ריצה: 3
זמן ריצה כולל: 24.015 שניות
ניתן גם לשייך אותו לצמיתות למיניון על ידי הקלטתו ב- /srv/salt/top.sls
קובץ, המשמש את state.highstate פקודה להחיל את כל המצבים הרלוונטיים במעבר אחד:
שרת# cat /srv/salt/top.sls
בסיס:
kali-scratch:
- offsec
שרת# מצב מלח קאלי-גירוד. מצב גבוה
kali-scratch:
----------
מזהה: offsec_repository פונקציה: pkgrepo.managed
שם: deb http://pkgrepo.offsec.com offsec-internal תוצאה ראשית: נכון
הערה: ריפו החבילה 'deb http://pkgrepo.offsec.com offsec-internal main' כבר
➥ מוגדר התחיל: 06:06:20.650053
משך: 62.805 אלפיות השנייה שינויים:
----------
מזהה: offsec-defaults פונקציה: pkg.installed
תוצאה: נכון
הערה: החבילה offsec-defaults כבר מותקנת. התחל: 06:06:21.436193
משך: 385.092 אלפיות השנייה שינויים:
----------
מזהה: ssh_key_for_root
שרת# cat /srv/salt/top.sls
בסיס:
kali-scratch:
- offsec
שרת# מצב מלח קאלי-גירוד. מצב גבוה
kali-scratch:
----------
מזהה: offsec_repository פונקציה: pkgrepo.managed
שם: deb http://pkgrepo.offsec.com offsec-internal תוצאה ראשית: נכון
הערה: ריפו החבילה 'deb http://pkgrepo.offsec.com offsec-internal main' כבר
➥ מוגדר התחיל: 06:06:20.650053
משך: 62.805 אלפיות השנייה שינויים:
----------
מזהה: offsec-defaults פונקציה: pkg.installed
תוצאה: נכון
הערה: החבילה offsec-defaults כבר מותקנת. התחל: 06:06:21.436193
משך: 385.092 אלפיות השנייה שינויים:
----------
מזהה: ssh_key_for_root
פונקציה: ssh_auth.present
שם: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali תוצאה: נכון
הערה: מפתח המארח המורשה AAAAB3NzaC1yc2...89C4N כבר קיים עבור
➥ משתמש root
התחיל: 06:06:21.821811
משך: 1.936 אלפיות השנייה שינויים:
תקציר לקאלי-שריטה
------------
הצליח: 3
נִכשָׁל: 0
------------
סה"כ מצבי ריצה: 3
זמן ריצה כולל: 449.833 אלפיות השנייה
פונקציה: ssh_auth.present
שם: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali תוצאה: נכון
הערה: מפתח המארח המורשה AAAAB3NzaC1yc2...89C4N כבר קיים עבור
➥ משתמש root
התחיל: 06:06:21.821811
משך: 1.936 אלפיות השנייה שינויים:
תקציר לקאלי-שריטה
------------
הצליח: 3
נִכשָׁל: 0
------------
סה"כ מצבי ריצה: 3
זמן ריצה כולל: 449.833 אלפיות השנייה