במאמר הזה מוסבר איך להגדיר אפליקציות כדי לחבר באופן פרוגרמטי בין שתי מכונות וירטואליות (VM) באמצעות SSH ו-OS Login. הפעלת SSH באפליקציות יכולה להיות שימושית לאוטומציה של תהליכי ניהול מערכת.
כל דוגמאות הקוד שמופיעות במדריך הזה מתארחות בדף GoogleCloudPlatform/python-docs-samples ב-GitHub.
לפני שמתחילים
- הגדרת SSH לחשבון שירות
- הגדרת OS Login בפרויקט או במכונה וירטואלית שפועלת כחשבון שירות.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API של Google Cloud , לא צריך להגדיר אימות.
gcloud
-
התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
- הגדרת אזור ותחום כברירת מחדל.
הגדרת אפליקציית SSH
מגדירים את האפליקציה לניהול מפתחות SSH וליצירת חיבורי SSH למכונות וירטואליות של Compute Engine. ברמה הכללית, האפליקציה צריכה לבצע את הפעולות הבאות:
- מייבאים את ספריית Google OS Login כדי ליצור ספריות לקוח, שמאפשרות לכם לבצע אימות באמצעות OS Login API.
- מאתחלים את האובייקט OS Login Client כדי לאפשר לאפליקציה להשתמש ב-OS Login.
- מטמיעים את השיטה
create_ssh_key()שיוצרת מפתח SSH לחשבון השירות של המכונה הווירטואלית ומוסיפה את המפתח הציבורי לחשבון השירות. - מפעילים את ה-method
get_login_profile()מספריית OS Login כדי לקבל את שם המשתמש ב-POSIX שמשמש את חשבון השירות. - מטמיעים שיטת
run_ssh()כדי להריץ פקודת SSH מרחוק. - מסירים את קובצי מפתחות ה-SSH הזמניים.
אפליקציית SSH לדוגמה
האפליקציה לדוגמה oslogin_service_account_ssh.py מדגימה הטמעה אפשרית של אפליקציית SSH. בדוגמה הזו, האפליקציה משתמשת ב-method run_ssh() כדי להריץ פקודה במכונה מרוחקת ולהחזיר את פלט הפקודה.
הפעלת אפליקציית SSH
אחרי שיוצרים אפליקציה שמשתמשת ב-SSH, אפשר להריץ אותה באמצעות תהליך שדומה לדוגמה הבאה, שמתקינה ומריצה את אפליקציית הדוגמה oslogin_service_account_ssh.py. יכול להיות שהספריות שתתקינו יהיו שונות, בהתאם לשפת התכנות שבה האפליקציה משתמשת.
אפשרות אחרת היא לכתוב אפליקציה שמייבאת את oslogin_service_account_ssh.py ומריצה אותה ישירות.
מתחברים למכונה הווירטואלית שמארחת את אפליקציית ה-SSH.
ב-VM, מתקינים את
pipואת ספריית הלקוח של Python 3:sudo apt update && sudo apt install python3-pip -y && pip install --upgrade google-cloud-os-login requests
אופציונלי: אם אתם משתמשים באפליקציה לדוגמה
oslogin_service_account_ssh.py, אתם יכולים להוריד אותה מ-GoogleCloudPlatform/python-docs-samples:curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/compute/oslogin/oslogin_service_account_ssh.py
מריצים את אפליקציית ה-SSH. אפליקציית הדוגמה משתמשת ב-
argparseכדי לקבל משתנים משורת הפקודה. בדוגמה הזו, נותנים לאפליקציה הוראה להתקין ולהריץ אתcowsayב-VM אחר בפרויקט.python3 service_account_ssh.py \ --cmd 'sudo apt install cowsay -y && cowsay "It works!"' \ --project=PROJECT_ID --instance=VM_NAME --zone=ZONE
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט של ה-VM שהאפליקציה מתחברת אליו. -
VM_NAME: השם של המכונה הווירטואלית שאליה האפליקציה מתחברת. -
ZONE: האזור של המכונה הווירטואלית שהאפליקציה מתחברת אליה.
הפלט אמור להיראות כך:
⋮ ___________ It works! ----------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||-
המאמרים הבאים
- מורידים את דוגמת הקוד המלאה ומעיינים בה. הדוגמה המלאה כוללת דוגמה קטנה לשימוש בכל השיטות האלה ביחד. אתם יכולים להוריד אותו, לשנות אותו ולהריץ אותו בהתאם לצרכים שלכם.
- איך פועלים חיבורי SSH ב-Compute Engine, כולל הגדרה ואחסון של מפתחות SSH.