הגדרת Azure TAG באמצעות PowerShell

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

לפני שמתחילים עם תיוג אובייקטים בשירות Azure, צריך להכין או לבצע מיפוי של איך היינו רוצים לראות את התיוג שלנו, למשל, רשימה של תחומי ענין, כמו:

  • בעלי אחריות על הסביבה
  • האם הסביבה מנוטרת מבחינת אבטחה
  • האם יש SLA לסביבה
  • סוג הסביבה, האם ייצור או סביבה בדיקות
  • מהן העלויות Cost על האובייקטים
  • האם הסביבה מוגנת ומוקשחת (מטעמי אבטחת מידע)

תחילה ניצור אסטרטגיה גלובאלית ורק לאחר מכן נוכל להגדיר את תיוג באופן גורף.

המאמר Resource naming and tagging decision guide מספק מידע לגבי הדרכים שבהן כדאי לבנות את האסטרטגיה עם סוגי תיוג, כמו:

  • Functional
  • Classification
  • Accounting
  • Partnership
  • Purpose

מהן הדרכים להגדרת Azure TAG? ישנם מספר דרכים להגדרת תיוג בשירות Azure:

  • באופן ידני, ואולי מתאים למקרים ספציפיים בלבד (פחות מומלץ)
  • באמצעות Azure Policy עם הגדרה שאוכפת תיוג על אובייקטים
  • באמצעות PowerShell
  • על גבי Infrasructure as Code

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

איך לתייג באמצעות PowerShell

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

הגדרת Azure TAG

אז איך מתחילים לתייג באמצעות PowerShell?

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

  • תחילה נוודא שיש לנו PowerShell מודול של Az.Accounts
  • לאחר מכן נבצע לוגין לסביבה מתוך PowerShell ונוודא שאנו נמצאים מול החשבון (Subscription) הנדרש
Login-AzAccount
Get-AzSubscription 
Select-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 $resourceGroupName
Set-AzResourceGroup -Id $azureRGInfo.ResourceId -Tag @{ENV = "LAB"; Owner = "Elli Shlomo"; BusinessProcess = "CloudOPS_LAB" } 

אז מה עושים עם כל האובייקטים הנוספים אשר שייכים לאותו Resource Group? מוסיפים לפקודה הקודמת או מבצעים בנפרד הגדרת TAG לכלל האובייקטים השייכים לאותו Resource Group באמצעות הפקודות הבאות

$resourceGroupName = "LAB"
$azureRGInfo = Get-AzResourceGroup -Name $resourceGroupName
foreach ($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 נוספות ניתן למצוא בגיטהאב אצלי

 

מה דעתך?

This site uses Akismet to reduce spam. Learn how your comment data is processed.