תרגיל - הוספת פרמטרים ופלט לתבנית Azure Resource Manager

הושלמה

בתרגיל זה, עליך להוסיף פרמטר להגדרת שם חשבון האחסון של Azure במהלך הפריסה. לאחר מכן, הוסף פרמטר כדי להגדיר אילו תוכניות SKU של חשבון אחסון מותרות, ולהגדיר באיזה מהם להשתמש עבור פריסה זו. ניתן גם להוסיף שימושיות לתבנית Azure Resource Manager (תבנית ARM) על-ידי הוספת פלט שניתן להשתמש בו בהמשך תהליך הפריסה.

יצירת פרמטרים עבור תבנית ARM

כאן תוכל להפוך את תבנית ARM שלך גמישה יותר על-ידי הוספת פרמטרים שניתן להגדיר בזמן ריצה. צור פרמטר עבור storageName זה.

  1. בקובץ azuredeploy.json ב- Visual Studio Code, עדכן "parameters":{},את , כך שייראה כך:

    "parameters": {
      "storageName": {
        "type": "string",
        "minLength": 3,
        "maxLength": 24,
        "metadata": {
          "description": "The name of the Azure storage resource"
        }
      }
    },
    

    כדי לעצב את קובץ ה- JSON כראוי, הקש Alt+Shift+F.

  2. השתמש בפרמטר החדש בבלוק resources בבלוק ה- name ובערכים displayName הבאים. הקובץ כולו נראה כמו דוגמת קוד זו:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageName": {
          "type": "string",
          "minLength": 3,
          "maxLength": 24,
          "metadata": {
            "description": "The name of the Azure storage resource"
          }
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2025-01-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Standard_LRS"
          }
        }
      ],
      "outputs": {}
    }
    
  3. שמור את הקובץ.

פריסת תבנית ARM המותאם לפרמטרים

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

הפעל את הפקודות הבאות של ממשק המשתמש של Azure במסוף. קובץ Script זה זהה לזה שבו השתמשת בעבר, פרט לשם הפריסה שונה. הזן ערך ייחודי לפרמטר storageName . עליו להיות ייחודי באופן כללי ב- Azure, להכיל 3 עד 24 תווים ולכלול אותיות קטנות, מספרים ומקפים בלבד. ניתן לעשות שימוש חוזר בשם הייחודי שיצרת ביחידה הקודמת; אם תעשה זאת, Azure יעדכן את המשאב הקיים במקום ליצור משאב חדש.

templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="addnameparameter-"$today

az deployment group create \
  --name $DeploymentName \
  --template-file $templateFile \
  --parameters storageName={your-unique-name}

הפעל את הפקודות הבאות של Azure PowerShell במסוף. קובץ Script זה זהה לזה שבו השתמשת קודם לכן, פרט לכך ששם הפריסה השתנה. הזן ערך ייחודי לפרמטר storageName . עליו להיות ייחודי באופן כללי ב- Azure, להכיל 3 עד 24 תווים ולכלול אותיות קטנות, מספרים ומקפים בלבד. ניתן לעשות שימוש חוזר בשם הייחודי שיצרת ביחידה הקודמת; אם תעשה זאת, Azure יעדכן את המשאב הקיים במקום ליצור משאב חדש.

$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
  -Name $deploymentName `
  -TemplateFile $templateFile `
  -storageName {your-unique-name}

בדוק את הפריסה שלך

  1. בסיום הפריסה, חזור לפורטל Azure בדפדפן שלך. עבור אל קבוצת המשאבים שלך ו ודא שקיימות כעת 3 פריסות בהצלחה. בחר קישור זה.

    שים לב שכל שלוש הפריסה נמצאות ברשימה.

  2. גלה את addnameparameter הפריסה כפי שעשית קודם לכן.

הוספת פרמטר נוסף המגביל ערכים מותרים

כאן, השתמש בפרמטרים כדי להגביל את הערכים המותרים עבור פרמטר.

  1. הוסף פרמטר חדש בשם storageSKU המקטע parameters של קובץ azuredeploy.json .

    // This is the allowed values for an Azure storage account
    "storageSKU": {
       "type": "string",
       "defaultValue": "Standard_LRS",
       "allowedValues": [
         "Standard_LRS",
         "Standard_GRS",
         "Standard_RAGRS",
         "Standard_ZRS",
         "Premium_LRS",
         "Premium_ZRS",
         "Standard_GZRS",
         "Standard_RAGZRS"
       ]
     }
    

    השורה הראשונה היא תגובה. תבניות ARM תומכות // והערות /* */ נוספות.

  2. עדכן המשאבים להשתמש בפרמטר storageSKU הבא. אם אתה מנצל את IntelliSense ב- Visual Studio Code, שלב זה הופך שלב זה לקל יותר.

    "sku": {
         "name": "[parameters('storageSKU')]"
       }
    

    הקובץ כולו נראה כמו דוגמת קוד זו:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageName": {
          "type": "string",
          "minLength": 3,
          "maxLength": 24,
          "metadata": {
            "description": "The name of the Azure storage resource"
          }
        },
        "storageSKU": {
          "type": "string",
          "defaultValue": "Standard_LRS",
          "allowedValues": [
            "Standard_LRS",
            "Standard_GRS",
            "Standard_RAGRS",
            "Standard_ZRS",
            "Premium_LRS",
            "Premium_ZRS",
            "Standard_GZRS",
            "Standard_RAGZRS"
          ]
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2025-01-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "[parameters('storageSKU')]"
          }
        }
      ],
      "outputs": {}
    }
    
  3. שמור את הקובץ.

פריסת תבנית ARM

כאן, ניתן לפרוס בהצלחה באמצעות storageSKU פרמטר שאינו מופיע ברשימה המותרת. לאחר מכן, אתה מנסה לפרוס את התבנית storageSKU באמצעות פרמטר שאינו מופיע ברשימה המותרת. הפריסה השניה נכשלת כצפוי.

  1. פרוס את התבנית על-ידי הפעלת הפקודות הבאות. מלא שם ייחודי עבור הפרמטר storageName שלך. עליו להיות ייחודי באופן כללי ב- Azure, להכיל 3 עד 24 תווים ולכלול אותיות קטנות, מספרים ומקפים בלבד. ניתן לעשות שימוש חוזר בשם הייחודי שיצרת ביחידה הקודמת; אם תעשה זאת, Azure יעדכן את המשאב הקיים במקום ליצור משאב חדש.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addSkuParameter-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Standard_GRS storageName={your-unique-name}
    

    אפשר לפריסה זו להסתיים. פריסה זו מצליחה כצפוי. רשימת הערכים המותרים מונעת ממשתמשי התבנית להעביר ערכי פרמטרים שאינם פועלים עבור המשאב. בוא נראה מה קורה כאשר אתה מספק SKU לא חוקי.

  2. הפעל את הפקודות הבאות כדי לפרוס את התבנית עם פרמטר אסור. כאן שינית את הפרמטר storageSKU ל- בסיסי. מלא שם ייחודי עבור הפרמטר storageName שלך. עליו להיות ייחודי באופן כללי ב- Azure, להכיל 3 עד 24 תווים ולכלול אותיות קטנות, מספרים ומקפים בלבד. ניתן לעשות שימוש חוזר בשם הייחודי שיצרת ביחידה הקודמת; אם תעשה זאת, Azure יעדכן את המשאב הקיים במקום ליצור משאב חדש.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addSkuParameter-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Basic storageName={your-unique-name}
    

    פריסה זו נכשלת. שים לב לשגיאה.

    מסך של חלון המסוף המציג את שגיאת אימות הפריסה.

  1. פרוס את התבנית על-ידי הפעלת הפקודות הבאות. מלא שם ייחודי עבור הפרמטר storageName שלך. עליו להיות ייחודי באופן כללי ב- Azure, להכיל 3 עד 24 תווים ולכלול אותיות קטנות, מספרים ומקפים בלבד. ניתן לעשות שימוש חוזר בשם הייחודי שיצרת ביחידה הקודמת; אם תעשה זאת, Azure יעדכן את המשאב הקיים במקום ליצור משאב חדש.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addSkuParameter-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Standard_GRS
    

    אפשר לפריסה זו להסתיים. פריסה זו מצליחה כצפוי. רשימת הערכים המותרים מונעת ממשתמשי התבנית להעביר ערכי פרמטרים שאינם פועלים עבור המשאב. בוא נראה מה קורה כאשר אתה מספק SKU לא חוקי.

  2. הפעל את הפקודות הבאות כדי לפרוס את התבנית עם פרמטר אסור. כאן שינית את הפרמטר storageSKU ל- בסיסי. מלא שם ייחודי עבור הפרמטר storageName שלך. עליו להיות ייחודי באופן כללי ב- Azure, להכיל 3 עד 24 תווים ולכלול אותיות קטנות, מספרים ומקפים בלבד. ניתן לעשות שימוש חוזר בשם הייחודי שיצרת ביחידה הקודמת; אם תעשה זאת, Azure יעדכן את המשאב הקיים במקום ליצור משאב חדש.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addSkuParameter-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Basic
    

    פריסה זו נכשלת. שים לב לשגיאה.

    מסך של חלון המסוף המציג את שגיאת אימות הפריסה.

הוספת פלט לתבנית ARM

כאן, עליך להוסיף למקטע outputs של תבנית ARM כדי ליצור פלט של נקודות הקצה עבור משאב חשבון האחסון.

  1. בקובץ azuredeploy.json ב- Visual Studio Code, עדכן "outputs":{}, כך שייראה כך:

    "outputs": {
      "storageEndpoint": {
        "type": "object",
        "value": "[reference(parameters('storageName')).primaryEndpoints]"
      }
    }
    
  2. שמור את הקובץ.

פריסת תבנית ARM עם פלט

כאן, עליך לפרוס את התבנית ולראות את הפלט של נקודות הקצה כ- JSON. עליך למלא שם ייחודי עבור הפרמטר storageName הבא. עליו להיות ייחודי באופן כללי ב- Azure, להכיל 3 עד 24 תווים ולכלול אותיות קטנות, מספרים ומקפים בלבד. ניתן לעשות שימוש חוזר בשם הייחודי שיצרת ביחידה הקודמת; אם תעשה זאת, Azure יעדכן את המשאב הקיים במקום ליצור משאב חדש.

  1. פרוס את התבנית על-ידי הפעלת הפקודות הבאות. הקפד להחליף את {your-unique-name} במחרוזת ייחודית לך.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addoutputs-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Standard_LRS storageName={your-unique-name}
    

    שים לב לפלט.

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

  1. פרוס את התבנית על-ידי הפעלת הפקודות הבאות. הקפד להחליף את {your-unique-name} במחרוזת ייחודית לך.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addOutputs-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Standard_LRS
    

    שים לב לפלט.

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

בדוק את פריסת הפלט

בפורטל Azure, עבור אל addOutputs שלך. תוכל גם למצוא את הפלט שלך שם.

מסך של פורטל Azure המציג את בחירת הפלט בתפריט הימני.