הפעלה וכיבוי אוטומטיים של VM ב-Azure (והמשך הקיטורים מהפוסט הקודם)

08/07/2017

אין תגובות

שרתים וירטואלייםמחוייבים לפי המשאבים שהוקצו להם וזמן הפעילות, בניגוד לשרתים “בשר ודם” שהעלות המשתנה שלהם מתבטאת בצריכת חשמל ואולי בשחיקה מסויימת של החומרה. לכן כדאי לכבות אותם אם אינם בשימוש, ולחסוך חלק ניכר מהעלות.
כדאי לציין ש”לכבות” אינו מתבטא רק בלהתחבר לשרת ולהוריד אותו, אלא בלכבות אותו דרך הפורטל – ואז הוא deallocated. משל למה הדבר דומה? החנתם את המכונית וכיביתם את המנוע כך שאינה צורכת יותר דלק, אבל עדיין צריך לשלם על החנייה. לו היה ניתן לעשות לה deallocation אפשר היה “להעלים” אותה לזמן מה ולחסוך גם את זה.

הבהרה: כל מה שכתוב להלן מתייחס ל-VM שאינם Classic VM!

תזמון הכיבוי די פשוט (התעלמו מה-Webhook URL):

image

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

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

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

Graphical PowerShell Workflow

בפוסט הקודם כתבתי על Automation Account. אני מניח שכבר יש אחד כזה, נכנסים אליו מהתפריט הראשי בפורטל, ניגשים ל-Runbooks, ובוחרים ב-Browse gallery:

image

image

אפשר להיעזר באמצעי הפילטור כדי לחפש את מבוקשנו, אלא שבמקרה זה הוא נמצא במעלה הרשימה – Start Azure V2 VMs, ובוחרים בו.
שימו לב: אנחנו מייבאים מהרשת workflow מוכן, יוצרים עותק מקומי, ואותו משנים ומקנפגים כרצוננו.

 

image

במסך ה-Runbook בחרנו ב-Edit כדי לקנפג אותו, ושם:
מוחקים את  וGet all VMs in RG ואת , Get all VMs in Sub ומשאירים את Get Single VM;
ומקנפגים את הפרמטרים עם שם השרת ושם ה-Resource Group שלו (את שניהם אפשר למצוא במסך של ה-VM):

image

בצילום המסך אפשר לראות כיצד לשנות את את שם השרת,
ואת שם ה-Resource Group משנים באותה צורה.
לסיום- מבצעים גם Save וגם Publish ל-Graphical Runbook.

בדיקה: בהנחה שה-VM מכובה, ניתן להפעיל כבר את ה-Runbook,  עוד לפנינו שייצרנו לו Schedule כדי לוודא שהוא תקין.
בפוסט הקודם יש הסבר כיצד לבצע הרצת נסיון של Runbook וכיצד לתזמן את הריצה שלו בעזרת Schedule (השינוי היחידי הוא שצריך לציין שוב את הפרמטרים – גם בהרצת הנסיון וגם בתזמון).

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

PowerShell

אופצייה זו הרבה פחות מסורבלת מהנ”ל, אך מחייבת שימוש ב-Credential, כפי שהוסבר בפוסט הקודם.
שוב יוצרים Runbook חדש, מסוג PoweShell:

image

מאשרים, ובמסך ה-Runbook החדש שנוצר בוחרים ב-Edit (כמו בדוגמה הקודמת), אלא שהפעם מגיעים למסך בו יש להזין קוד PowerShell:

   1: $pscreds =  Get-AutomationPSCredential -Name 'MyCredential'

   2:  

   3: Add-AzureRmAccount  -Credential $pscreds

   4: Select-AzureRmSubscription -SubscriptionId "12345678-1234-1234-1234-123467890"

   5: Start-AzureRmVM -Name: MyVM -ResourceGroupName: MyResourceGroup

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

כדאי לציין שבאותה שיטה בדיוק ניתן לכבות את המכונה, אם כי בקוד ה-PowerShell יש לציין –Force- בפקודת ה-Start-AzureRmVM.
בנוסף – אפשר להפעיל את קודי ה-PowerShell ידנית מה-ISE (ממשק ה-Windows), ללא שם ה-Credential (שהוא אובייקט ב-Azure), ואז יקפוץ מסך הכניסה וההזדהות של מיקרוסופט.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

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