빠른 시작: 템플릿 사양 만들기 및 배포

이 빠른 시작에서는 템플릿 사양에 ARM 템플릿(Azure Resource Manager 템플릿)을 패키지하는 방법을 보여 줍니다. 그런 다음, 해당 템플릿 사양을 배포합니다. 템플릿 사양에는 스토리지 계정을 배포하는 ARM 템플릿이 포함되어 있습니다.

ARM 템플릿과 동일한 기능을 제공하고 구문이 사용하기 더 쉽기 때문에 Bicep를 권장합니다. 자세한 내용은 빠른 시작: Bicep으로 템플릿 사양 만들기 및 배포를 참조하세요.

필수 조건

활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.

참고 항목

Azure PowerShell에서 템플릿 사양을 사용하려면 버전 5.0.0 이상을 설치해야 합니다. Azure CLI에서 사용하려면 버전 2.14.2 이상을 사용합니다.

템플릿 만들기

로컬 템플릿에서 템플릿 사양을 만듭니다. 다음 템플릿을 복사하고 azuredeploy.json이라는 파일에 로컬로 저장합니다. 이 빠른 시작에서는 c:\Templates\azuredeploy.json 경로에 저장했지만 모든 경로를 사용할 수 있다고 가정합니다.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.13.1.58284",
      "templateHash": "13120038605368246703"
    }
  },
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GRS",
        "Standard_GZRS",
        "Standard_LRS",
        "Standard_RAGRS",
        "Standard_RAGZRS",
        "Standard_ZRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The storage account location."
      }
    },
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "The name of the storage account"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[parameters('storageAccountName')]"
    },
    "storageAccountId": {
      "type": "string",
      "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
    }
  }
}

템플릿 사양 만들기

템플릿 사양은 Microsoft.Resources/templateSpecs라는 리소스 종류입니다. 템플릿 사양을 만들려면 PowerShell, Azure CLI, 포털 또는 ARM 템플릿을 사용합니다.

  1. 템플릿 사양을 포함할 새 리소스 그룹을 만듭니다.

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location westus2
    
  2. 해당 리소스 그룹에서 템플릿 사양을 만듭니다. 새 템플릿 사양에 storageSpec라는 이름을 지정합니다.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "1.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "c:\Templates\azuredeploy.json"
    

템플릿 사양 배포

템플릿 사양을 배포하려면 템플릿을 배포하는 데 사용하는 것과 동일한 배포 명령을 사용합니다. 배포할 템플릿 사양의 리소스 ID를 전달합니다.

  1. 새 스토리지 계정을 포함하는 리소스 그룹을 만듭니다.

    New-AzResourceGroup `
      -Name storageRG `
      -Location westus2
    
  2. 템플릿 사양의 리소스 ID를 가져옵니다.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. 템플릿 사양을 배포합니다.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. ARM 템플릿과 정확히 동일한 매개 변수를 제공합니다. 스토리지 계정 유형에 대한 매개 변수를 사용하여 템플릿 사양을 다시 배포합니다.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -storageAccountType Standard_GRS
    

액세스 허가

조직의 다른 사용자가 템플릿 사양을 배포하도록 하려면 해당 사용자에게 읽기 액세스 권한을 부여해야 합니다. 공유하려는 템플릿 사양이 포함된 리소스 그룹에 대한 Microsoft Entra 그룹에 읽기 권한자 역할을 할당할 수 있습니다. 자세한 내용은 자습서: Azure PowerShell을 사용하여 Azure 리소스에 대한 그룹 액세스 권한 부여를 참조하세요.

템플릿 업데이트

템플릿 사양에서 템플릿에 적용할 변경 내용을 식별했다고 가정해 보겠습니다. 다음 템플릿은 스토리지 계정 이름에 대한 접두사를 추가하는 것을 제외하면 이전 템플릿과 비슷합니다. 다음 템플릿을 복사하고 azuredeploy.json 파일을 업데이트합니다.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_ZRS",
        "Premium_LRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "namePrefix": {
      "type": "string",
      "maxLength": 11,
      "defaultValue": "store",
      "metadata": {
        "description": "Prefix for storage account name"
      }
    }
  },
  "variables": {
    "storageAccountName": "[concat(parameters('namePrefix'), uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    }
  }
}

템플릿 사양 버전 업데이트

수정된 템플릿에 대한 새 템플릿 사양을 생성하는 대신 기존 템플릿 사양에 2.0이라는 새 버전을 추가합니다. 사용자는 배포할 버전을 선택할 수 있습니다.

  1. 템플릿 사양에 대한 새 버전을 만듭니다.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "c:\Templates\azuredeploy.json"
    
  2. 새 버전을 배포하려면 2.0 버전에 대한 리소스 ID를 가져옵니다.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
    
  3. 해당 모델을 배포합니다. 스토리지 계정 이름의 접두사를 제공합니다.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -namePrefix "demoaccount"
    

리소스 정리

이 빠른 시작에서 배포한 리소스를 정리하려면 만든 리소스 그룹을 모두 삭제합니다.

  1. Azure Portal의 왼쪽 메뉴에서 리소스 그룹을 선택합니다.

  2. 이름으로 필터링 필드에 리소스 그룹 이름(templateSpecRG 및 storageRG)을 입력합니다.

  3. 해당 리소스 그룹 이름을 선택합니다.

  4. 위쪽 메뉴에서 리소스 그룹 삭제를 선택합니다.

다음 단계

연결된 템플릿을 포함하는 템플릿 사양을 만드는 방법에 대한 자세한 내용은 연결된 템플릿의 템플릿 사양 만들기를 참조하세요.