הגדרת Azure TAG באמצעות PowerShell
האם אתם.ן מתייגים אובייקטים ומשאבים בשירות Azure? במידה ולא, הגיע הזמן לתייג אובייקטים ומשאבים בהתאם לדפוסים השונים שיש בארגון, וזאת בכדי לקבל תובנות על הסביבת Azure, ולכן מומלץ מאוד לתייג אובייקטים.
ישנם דרכים שונות לתייג אובייקטים בסביבת Azure, והמאמר הנוכחי מתמקד בהגדרת Azure TAG באמצעות PowerShell.
לפני שמתחילים עם תיוג אובייקטים בשירות Azure, צריך להכין או לבצע מיפוי של איך היינו רוצים לראות את התיוג שלנו, למשל, רשימה של תחומי ענין, כמו:
- בעלי אחריות על הסביבה
- האם הסביבה מנוטרת מבחינת אבטחה
- האם יש SLA לסביבה
- סוג הסביבה, האם ייצור או סביבה בדיקות
- מהן העלויות Cost על האובייקטים
- האם הסביבה מוגנת ומוקשחת (מטעמי אבטחת מידע)
תחילה ניצור אסטרטגיה גלובאלית ורק לאחר מכן נוכל להגדיר את תיוג באופן גורף.
המאמר Resource naming and tagging decision guide מספק מידע לגבי הדרכים שבהן כדאי לבנות את האסטרטגיה עם סוגי תיוג, כמו:
- Functional
- Classification
- Accounting
- Partnership
- Purpose
מהן הדרכים להגדרת Azure TAG? ישנם מספר דרכים להגדרת תיוג בשירות Azure:
- באופן ידני, ואולי מתאים למקרים ספציפיים בלבד (פחות מומלץ)
- באמצעות Azure Policy עם הגדרה שאוכפת תיוג על אובייקטים
- באמצעות PowerShell
- על גבי Infrastructure as Code
אז מה צריך בשביך להתחיל לתייג? לקבל החלטה, לבנות מסמך קצר (או יותר נכון טבלה) של סוגי תיוג, מאפיינים ואובייקטים נדרשים לתיוג – ולתייג.
איך לתייג באמצעות PowerShell
ניתן לתייג אובייקטים עם PowerShell בדרכים שונות, החל מאובייקט ספציפי ועד כל האובייקטים אשר שייכים לאותו Resource Group, ובגלל שמדובר על PowerShell אז אין גבולות.
הגדרת Azure TAG
אז איך מתחילים לתייג באמצעות PowerShell?
כך נראה Resource Group ללא תיוג כלשהוא, וזאת כמובן דוגמה לאובייקט מסוג Resource Group שמכיל תחתיו עוד אובייקטים רבים של מכונות, רכיבי רשת ועוד שלל אובייקטים של Azure.
- תחילה נוודא שיש לנו PowerShell מודול של Az.Accounts
- לאחר מכן נבצע לוגין לסביבה מתוך PowerShell ונוודא שאנו נמצאים מול החשבון (Subscription) הנדרש
Login-AzAccountGet-AzSubscriptionSelect-AzSubscription -Subscription “subscription id”
לאחר מכן נבדוק האם ישנו תיוג לאובייקטים קיימים באמצעות הפקודות הבאות
Get-AzTag
(Get-AzResource -ResourceGroupName “LAB”).Tags | fl
לאחר מכן נגדיר תיוג ברמת Resource Group באמצעות הפקודות הבאות, וכדאי לשים לב לדגשים הבאים: הגדרת תיוג ברמת Resource Group, הגדרת TAG לשלושה מאפיינים ספציפיים והגדרת רק ברמת אותו Resource Group ללא אכיפה על האובייקטים שנמצאים תחתיו.
$resourceGroupName = “LAB”$azureRGInfo = Get-AzResourceGroup -Name $resourceGroupNameSet-AzResourceGroup -Id $azureRGInfo.ResourceId -Tag @{ENV = “LAB”; Owner = “Elli Shlomo”; BusinessProcess = “CloudOPS_LAB” }
אז מה עושים עם כל האובייקטים הנוספים אשר שייכים לאותו Resource Group? מוסיפים לפקודה הקודמת או מבצעים בנפרד הגדרת TAG לכלל האובייקטים השייכים לאותו Resource Group באמצעות הפקודות הבאות
$resourceGroupName = “LAB”$azureRGInfo = Get-AzResourceGroup -Name $resourceGroupNameforeach ($item in $azureRGInfo) {Get-AzResource -ResourceGroupName $item.ResourceGroupName | ForEach-Object { Set-AzResource -ResourceId $PSItem.ResourceId -Tag $item.Tags -Force }}
במידה וישנם המון אובייקטים באותו Resource Group, אז הפקודה תרוץ למשך מספר דקות עד שתבצע אכיפה של התיוג לכלל האובייקטים
אם נריץ שוב את הפקודות לבדיקת מאפיינים התיוג שלי נוכל לראות כי ישנו תיוג לאובייקטים חדשים
ואם נבצע בדיקה לגבי כלל האובייקטים הקיימים של אותו Resource Group נוכל לראות את התיוג עצמו
ומתוך Azure Dashboard כולל בדיקה לגבי מאפיין מסוים
פקודות Azure TAG נוספות ניתן למצוא בגיטהאב אצלי