연습 - Azure Resource Manager 태그 및 매개 변수 파일 사용

완료됨

이 연습에서는 Microsoft Azure 리소스를 구성 및 추적하는 데 도움이 되는 태그를 추가합니다. 또한 ARM(Azure Resource Manager) 템플릿 매개 변수 파일을 사용하여 각 배포의 매개 변수 구성을 다르게 할 수도 있습니다.

이 연습에서는 Visual Studio Code용 Azure Resource Manager 도구를 사용합니다. Visual Studio Code에서 해당 확장을 설치해야 합니다.

리소스 배포 환경 및 프로젝트를 추적하는 태그 만들기

먼저 템플릿에서 리소스 태그로 사용할 매개 변수를 만듭니다.

  1. Visual Studio Code의 azuredeploy.json 파일에서 storageSKU 매개 변수의 닫는 괄호 뒤에 커서를 놓습니다. 쉼표 추가 및 Enter 키를 누릅니 .

  2. par을 입력합니다. 관련된 코드 조각 목록이 표시됩니다.

  3. arm-param을 선택합니다. 이렇게 하면 제네릭 매개 변수가 템플릿에 추가됩니다. 다음 코드와 같이 표시됩니다.

    "parameter1": {
        "type": "string",
        "metadata": {
            "description": "description"
        }
    
  4. parameter1resourceTags로 변경하고 "type": 값을 object로 변경합니다. 매개 변수는 string, secureString, int, bool, object, secureObject 및 array 데이터 형식일 수 있습니다. 이와 같은 매개 변수 형식의 예제 구문 링크는 이 모듈의 요약에 나와 있습니다.

  5. defaultValue:라는 특성을 추가하고 값을 {“Environment”: “Dev”, “Project”: “Tutorial”}로 설정합니다.

    매개 변수 블록은 다음 코드와 같이 표시됩니다.

    "parameters": {
        "storagePrefix": {
            "type": "string",
            "minLength": 3,
            "maxLength": 11
        },
        "storageSKU": {
            "type": "string",
            "defaultValue": "Standard_LRS",
            "allowedValues": [
                "Standard_LRS",
                "Standard_GRS",
                "Standard_RAGRS",
                "Standard_ZRS",
                "Premium_LRS",
                "Premium_ZRS",
                "Standard_GZRS",
                "Standard_RAGZRS"
            ]
        },
        "resourceTags": {
        "type": "object",
        "defaultValue": {
            "Environment": "Dev",
            "Project": "Tutorial"
            }
        }
    },
    
  6. 이 매개 변수를 사용하여 스토리지 계정 리소스에 태그를 적용합니다. 리소스 정의에서 tags: 특성을 변경합니다.

    "tags": "[parameters('resourceTags')]",
    
  7. 파일은 다음과 같이 표시됩니다.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
           "storagePrefix": {
               "type": "string",
               "minLength": 3,
               "maxLength": 11
           },
            "storageSKU": {
                "type": "string",
                "defaultValue": "Standard_LRS",
                "allowedValues": [
                    "Standard_LRS",
                    "Standard_GRS",
                    "Standard_RAGRS",
                    "Standard_ZRS",
                    "Premium_LRS",
                    "Premium_ZRS",
                    "Standard_GZRS",
                    "Standard_RAGZRS"
                ]
            },
            "resourceTags": {
            "type": "object",
            "defaultValue": {
                "Environment": "Dev",
                "Project": "Tutorial"
            }
        }
       },
        "functions": [],
        "variables": {
        "uniqueStorageName": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]"
      },
        "resources": [{
            "name": "[variables('uniqueStorageName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-06-01",
            "tags": "[parameters('resourceTags')]",
            "location": "[resourceGroup().location]",
            "kind": "StorageV2",
            "sku": {
             "name": "[parameters('storageSKU')]"
           }
        }],
        "outputs": {}
    }
    
  8. 파일을 저장합니다.

업데이트된 태그를 사용하여 ARM 템플릿 배포

  • 업데이트된 ARM 템플릿을 Azure에 배포합니다. 이전에 사용한 것과 동일한 storagePrefix를 사용해야 합니다.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="updateTags-"$today
    
    az deployment group create \
        --name $DeploymentName \
        --template-file $templateFile \
        --parameters storagePrefix={your-Prefix} storageSKU=Standard_LRS
    
  • 업데이트된 ARM 템플릿을 Azure에 배포합니다. 이전에 사용한 것과 동일한 storagePrefix를 사용해야 합니다.

    $templateFile = "azuredeploy.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="updateTags-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storagePrefix {your storagePrefix} `
      -storageSKU Standard_LRS
    

배포에 새 태그가 있는지 확인

  1. Azure에서 [샌드박스 리소스 그룹 이름] 리소스 그룹을 선택하고 배포한 스토리지 계정을 선택합니다.

  2. 환경: 개발프로젝트: 자습서 태그:

    Screenshot of the Azure portal that shows the selected tags in the Storage account Overview page.

매개 변수 파일 사용

현재 이 템플릿을 배포할 때마다 입력하는 세 가지 매개 변수가 있습니다. 템플릿의 각 사용자는 매개 변수 값을 포함할 파일을 만들 수 있습니다. 여기에서 템플릿과 함께 사용할 매개 변수 파일을 만듭니다.

  1. Visual Studio Code에서 다른 파일을 만듭니다. 해당 파일을 azuredeploy.parameters.dev.json이라고 합니다.

  2. 이 파일에서 개발 환경의 템플릿에 입력하려는 템플릿 매개 변수의 값을 추가합니다. 태그 값을 변경하여 배포가 변경되는지 확인합니다. 예를 들어 projectNameLearn으로 변경할 수 있습니다.

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storagePrefix": {
          "value": "{unique-prefix}"
        },
        "storageSKU": {
          "value": "Standard_LRS"
        },
        "resourceTags": {
          "value": {
            "Environment": "Dev",
            "Project": "Learn"
          }
        }
      }
    }
    
  3. {unique-prefix}를 고유한 접두사로 바꾸어야 합니다.

  4. 파일을 저장합니다.

매개 변수 파일을 사용하여 템플릿 배포

이 섹션에서는 사용할 매개 변수 파일을 지정하여 ARM 템플릿을 배포합니다.

  1. Visual Studio Code 터미널에서 다음 Azure CLI 명령을 실행합니다.

    templateFile="azuredeploy.json"
    devParameterFile="azuredeploy.parameters.dev.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addParameterFile-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters $devParameterFile
    
  2. Azure에서 배포에 성공했고 태그 값이 변경되었는지 확인합니다.

    Screenshot of the Azure portal that shows the updated tag values in the Storage account Overview page.

  3. 어려운 과제로 프로덕션 환경을 위한 매개 변수 파일을 만듭니다. 프로덕션 환경으로 배포하려면 명령을 실행할 때 매개 변수 파일 경로를 변경합니다.

  1. Visual Studio Code 터미널에서 다음 Azure PowerShell 명령을 실행합니다.

    $templateFile = "azuredeploy.json"
    $parameterFile="azuredeploy.parameters.dev.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addParameterFile-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -TemplateParameterFile $parameterFile
    
  2. Azure에서 배포에 성공했고 태그 값이 변경되었는지 확인합니다.

    Screenshot of the Azure portal that shows the updated tag values in the Storage account Overview page.

  3. 어려운 과제로 프로덕션 환경을 위한 매개 변수 파일을 만듭니다. 프로덕션 환경으로 배포하려면 명령을 실행할 때 매개 변수 파일 경로를 변경합니다.