티스토리 뷰

<참조>

https://docs.microsoft.com/ko-kr/azure/azure-resource-manager/template-tutorial-use-parameter-file?tabs=azure-powershell

https://docs.microsoft.com/en-us/azure/azure-resource-manager/template-tutorial-use-parameter-file?tabs=azure-powershell

 

 

 

 

 

 

 

이 자습서에서는 매개 변수 파일을 사용하여 배포 중에 전달하는 값을 저장하는 방법을 알아본다. 이전 자습서에서는 배포 명령에 인라인 매개 변수를 사용했다. 이 방식은 템플릿을 테스트하는 데 적당하지만 배포를 자동화하는 경우에는 환경에 맞는 값 세트를 전달하는 것이 더 쉬울 수 있다. 매개 변수 파일을 사용하면 특정 환경에 대한 매개 변수 값을 쉽게 패키징할 수 있다. 이 자습서에서는 개발 및 프로덕션 환경에 대한 매개 변수 파일을 생성한다.

 

 

 

 

 

 

필수 조건

Resource Manager Tools 확장이 포함된 Visual Studio Code 및 Azure PowerShell 또는 Azure CLI가 있어야 한다.

준비가 안되었다면, Azure 실습을 위한 Visual Studio Code 환경 구성과 Linux용 Windows 하위 시스템 설치를 참고하여 실습 준비를 마친다.

 

 

 

 

 

템플릿 검토

템플릿에는 배포 중에 제공할 수 있는 매개 변수가 많이 있다. 이전 자습서의 끝 부분에서, 템플릿은 다음과 같았다.

{

  "$schema": "https://schema.management.azure.com/schemas/2015-01-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"

      ]

    },

    "location": {

      "type": "string",

      "defaultValue": "[resourceGroup().location]"

    },

    "appServicePlanName": {

      "type": "string",

      "defaultValue": "exampleplan"

    },

    "webAppName": {

      "type": "string",

      "metadata": {

        "description": "Base name of the resource such as web app name and app service plan "

      },

      "minLength": 2

    },

    "linuxFxVersion": {

      "type": "string",

      "defaultValue": "php|7.0",

      "metadata": {

        "description": "The Runtime stack of current web app"

      }

    },

    "resourceTags": {

        "type": "object",

        "defaultValue": {

            "Environment": "Dev",

            "Project": "Tutorial"

        }

    }

  },

  "variables": {

    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",

    "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"

  },

  "resources": [

    {

      "type": "Microsoft.Storage/storageAccounts",

      "apiVersion": "2019-04-01",

      "name": "[variables('uniqueStorageName')]",

      "location": "[parameters('location')]",

      "tags": "[parameters('resourceTags')]",

      "sku": {

        "name": "[parameters('storageSKU')]"

      },

      "kind": "StorageV2",

      "properties": {

        "supportsHttpsTrafficOnly": true

      }

    },

    {

      "type": "Microsoft.Web/serverfarms",

      "apiVersion": "2016-09-01",

      "name": "[parameters('appServicePlanName')]",

      "location": "[parameters('location')]",

      "tags": "[parameters('resourceTags')]",

      "sku": {

        "name": "B1",

        "tier": "Basic",

        "size": "B1",

        "family": "B",

        "capacity": 1

      },

      "kind": "linux",

      "properties": {

        "perSiteScaling": false,

        "reserved": true,

        "targetWorkerCount": 0,

        "targetWorkerSizeId": 0

      }

    },

    {

      "type": "Microsoft.Web/sites",

      "apiVersion": "2016-08-01",

      "kind": "app",

      "name": "[variables('webAppPortalName')]",

      "location": "[parameters('location')]",

      "tags": "[parameters('resourceTags')]",

      "properties": {

        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",

        "siteConfig": {

          "linuxFxVersion": "[parameters('linuxFxVersion')]"

        }

      },

      "dependsOn": [

        "[parameters('appServicePlanName')]"

      ]

    }

  ],

  "outputs": {

    "storageEndpoint": {

      "type": "object",

      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"

    }

  }

}

 

이 템플릿은 잘 작동하지만 이제 템플릿에 전달하는 매개 변수를 쉽게 관리하려고 한다.

 

 

 

 

 

매개 변수 파일 추가

매개 변수 파일은 템플릿과 유사한 구조의 JSON 파일이다. 배포 중에 전달할 매개 변수 값을 이 파일에 제공한다.

VS Code에서 다음 내용이 포함된 새 파일을 만든다. 이 파일을 azuredeploy.parameters.dev.json이라는 이름으로 저장한다.

{

    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",

    "contentVersion": "1.0.0.0",

    "parameters": {

        "storagePrefix": {

            "value": "devstore"

        },

        "storageSKU": {

            "value": "Standard_LRS"

        },

        "appServicePlanName": {

            "value": "devplan"

        },

        "webAppName": {

            "value": "devapp"

        },

        "resourceTags": {

            "value": {

                "Environment": "Dev",

                "Project": "Tutorial"

            }

        }

    }

}

이 파일은 개발 환경에 대한 매개 변수 파일이다. 스토리지 계정에 Standard_LRS를 사용하고, 리소스 이름에 dev를 접두사로 사용하고 Environment 태그를 Dev로 설정한다.

다시, 다음 내용이 포함된 새 파일을 만든다. 이 파일을 azuredeploy.parameters.prod.json이라는 이름으로 저장한다.

{

    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",

    "contentVersion": "1.0.0.0",

    "parameters": {

        "storagePrefix": {

            "value": "contosodata"

        },

        "storageSKU": {

            "value": "Standard_GRS"

        },

        "appServicePlanName": {

            "value": "contosoplan"

        },

        "webAppName": {

            "value": "contosowebapp"

        },

        "resourceTags": {

            "value": {

                "Environment": "Production",

                "Project": "Tutorial"

            }

        }

    }

}

 

이 파일은 프로덕션 환경에 대한 매개 변수 파일이다. 스토리지 계정에 Standard_GRS를 사용하고, 리소스 이름에 contoso를 접두사로 사용하고 Environment 태그를 Production으로 설정한다. 실제 프로덕션 환경에서는 무료가 아닌 SKU로 App Service를 사용할 수 있지만 이 자습서에서는 이 SKU를 계속 사용한다.

 

 

 

 

 

 

템플릿 배포

Azure CLI 또는 Azure PowerShell을 사용하여 템플릿을 배포한다.

 

실습 디렉토리에서 탐색기 메뉴 중 Open with Code를 선택해 VS Code를 연다.

Ctrl + Shift + p를 누르고 화면 상단 터미널 선택 창에서 PowerShell Core를 선택하여 shell을 구동한다.

기존 powershell.ps1 이라는 파일을 이용하거나 새로 하나 생성하여 다음 코드를 붙여 넣는다.

위 함수 사용 섹션의  azuredeploy.json 코드도 기존 파일에 덮어 쓰거나 새로 하나 생성하여 붙여 넣는다.

$resourceGroup 이나 $templateFile은 각자 상황에 맞게 수정하고 -storageName의 값은 중복되지 않는 임의의 값으로 정해 입력해 준다. 

 

템플릿의 최종 테스트로, 두 가지 리소스 그룹을 새로 만들어 보겠다. 하나는 개발 환경용이고 다른 하나는 프로덕션 환경용이다.

먼저 개발 환경에 배포한다.

$location = "koreacentral"

$resourceGroup = "zeroRG-dev"

New-AzResourceGroup -Name $resourceGroup -Location $location

 

$templateFile = "C:\AzureDevOps-Exercise\azuredeploy.json"

$parameterFile = "C:\AzureDevOps-Exercise\azuredeploy.parameters.dev.json"

 

New-AzResourceGroupDeployment `

    -Name devenvironment `

    -ResourceGroupName $resourceGroup `

    -TemplateFile $templateFile `

    -TemplateParameterFile $parameterFile

위 코드 전체를 선택하고 F8을 눌러 코드를 실행한다.

이상이 없다면 ProvisioningState가 Succeeded 상태로 확인 될 것이다.

PS C:\AzureDevOps-Exercise> $location="koreacentral"
PS C:\AzureDevOps-Exercise> $resourceGroup="zeroRG-dev"
PS C:\AzureDevOps-Exercise> New-AzResourceGroup -Name $resourceGroup -Location $location
 
ResourceGroupName : zeroRG-dev
Location          : koreacentral
ProvisioningState : Succeeded
Tags              :
ResourceId        : /subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroRG-dev
 
PS C:\AzureDevOps-Exercise> $templateFile = "C:\AzureDevOps-Exercise\azuredeploy.json"
PS C:\AzureDevOps-Exercise> $parameterFile = "C:\AzureDevOps-Exercise\azuredeploy.parameters.dev.json"
PS C:\AzureDevOps-Exercise>
PS C:\AzureDevOps-Exercise> New-AzResourceGroupDeployment `
>>     -Name devenvironment `
>>     -ResourceGroupName $resourceGroup `
>>     -TemplateFile $templateFile `
>>     -TemplateParameterFile $parameterFile
 
DeploymentName          : devenvironment
ResourceGroupName       : zeroRG-dev
ProvisioningState       : Succeeded
Timestamp               : 12/15/2019 2:44:28 AM
Mode                    : Incremental
TemplateLink            :
Parameters              :
                          Name                  Type                       Value
                          ====================  =========================  ==========
                          storagePrefix         String                     devstore
                          storageSKU            String                     Standard_LRS
                          location              String                     koreacentral
                          appServicePlanName    String                     devplan  
                          webAppName            String                     devapp
                          linuxFxVersion        String                     php|7.0
                          resourceTags          Object                     {
                            "Environment": "Dev",
                            "Project": "Tutorial"
                          }
 
Outputs                 :
                          Name               Type                       Value
                          =================  =========================  ==========
                          storageEndpoint    Object                     {
                            "dfs": "https://devstorelvtzu3gxbbolk.dfs.core.windows.net/",
                            "web": "https://devstorelvtzu3gxbbolk.z12.web.core.windows.net/",
                            "blob": "https://devstorelvtzu3gxbbolk.blob.core.windows.net/",
                            "queue": "https://devstorelvtzu3gxbbolk.queue.core.windows.net/",
                            "table": "https://devstorelvtzu3gxbbolk.table.core.windows.net/",
                            "file": "https://devstorelvtzu3gxbbolk.file.core.windows.net/"
                          }
 
DeploymentDebugLogLevel :
 
 
PS C:\AzureDevOps-Exercise>

 

이제 프로덕션 환경에 배포한다.

$location = "koreacentral"

$resourceGroup = "zeroRG-prod"

New-AzResourceGroup -Name $resourceGroup -Location $location

 

$templateFile = "C:\AzureDevOps-Exercise\azuredeploy.json"

$parameterFile = "C:\AzureDevOps-Exercise\azuredeploy.parameters.prod.json"

 

New-AzResourceGroupDeployment `

    -Name prodenvironment `

    -ResourceGroupName $resourceGroup `

    -TemplateFile $templateFile `

    -TemplateParameterFile $parameterFile

 

위 코드 전체를 선택하고 F8을 눌러 코드를 실행한다.

PS C:\AzureDevOps-Exercise> $location="koreacentral"
PS C:\AzureDevOps-Exercise> $resourceGroup="zeroRG-prod"
PS C:\AzureDevOps-Exercise> New-AzResourceGroup -Name $resourceGroup -Location $location
 
ResourceGroupName : zeroRG-prod
Location          : koreacentral
ProvisioningState : Succeeded
Tags              :
ResourceId        : /subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroRG-prod
 
 
PS C:\AzureDevOps-Exercise> $templateFile = "C:\AzureDevOps-Exercise\azuredeploy.json"
PS C:\AzureDevOps-Exercise> $parameterFile = "C:\AzureDevOps-Exercise\azuredeploy.parameters.prod.json"
PS C:\AzureDevOps-Exercise>
PS C:\AzureDevOps-Exercise> New-AzResourceGroupDeployment `
>>     -Name prodenvironment `
>>     -ResourceGroupName $resourceGroup `
>>     -TemplateFile $templateFile `
>>     -TemplateParameterFile $parameterFile
 
DeploymentName          : prodenvironment
ResourceGroupName       : zeroRG-prod
ProvisioningState       : Succeeded
Timestamp               : 12/15/2019 3:08:42 AM
Mode                    : Incremental
TemplateLink            :
Parameters              :
                          Name                  Type                       Value
                          ====================  =========================  ==========
                          storagePrefix         String                     contosodata
                          storageSKU            String                     Standard_GRS
                          location              String                     koreacentral
                          appServicePlanName    String                     contosoplan
                          webAppName            String                     contosowebapp
                          linuxFxVersion        String                     php|7.0
                          resourceTags          Object                     {
                            "Environment": "Production",
                            "Project": "Tutorial"
                          }
 
Outputs                 :
                          Name               Type                       Value
                          =================  =========================  ==========
                          storageEndpoint    Object                     {
                            "dfs": "https://contosodatapaqwghlhdsdog.dfs.core.windows.net/",
                            "web": "https://contosodatapaqwghlhdsdog.z12.web.core.windows.net/",
                            "blob": "https://contosodatapaqwghlhdsdog.blob.core.windows.net/",
                            "queue": "https://contosodatapaqwghlhdsdog.queue.core.windows.net/",
                            "table": "https://contosodatapaqwghlhdsdog.table.core.windows.net/",
                            "file": "https://contosodatapaqwghlhdsdog.file.core.windows.net/"
                          }
 
DeploymentDebugLogLevel :
 
 
PS C:\AzureDevOps-Exercise>

 

 

터미널 창 우측 셀렉트 박스에 wsl이 있다면 그것을 선택한다.

없다면, Select Default Shell을 선택한다. 상단에 wsl을 선택할 수 있도록 가용한 shell 리스트가 나열될 것이며 그 중에서 WSL Bash를 선택한다.

현재 실습 디렉토리 내 azurecli.azcli라는 파일을 만들고 다음 코드를 붙여 넣는다.

각자의 상황에 맞게 resourceGroup과 templateFile 등의 값을 수정하여 저장한다.

resourceGroup="zerobigRG-dev"
location="koreacentral"

az group create \
  --name $resourceGroup \
  --location $location

templateFile="/mnt/c/AzureDevOps-Exercise/azuredeploy.json"

az group deployment create \
  --name devenvironment \
  --resource-group $resourceGroup \
  --template-file $templateFile \
  --parameters azuredeploy.parameters.dev.json

 

위 코드 전체를 선택하고 Ctrl + '를 눌러 코드를 실행한다.

zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$ resourceGroup="zerobigRG-dev"
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$ location="koreacentral"
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$ az group create \
>   --name $resourceGroup \
>   --location $location
{
  "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-dev",
  "location": "koreacentral",
  "managedBy": null,
  "name": "zerobigRG-dev",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$ templateFile="/mnt/c/AzureDevOps-Exercise/azuredeploy.json"
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$ az group deployment create \
>   --name devenvironment \
>   --resource-group $resourceGroup \
>   --template-file $templateFile \
>   --parameters azuredeploy.parameters.dev.json
{
  "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-dev/providers/Microsoft.Resources/deployments/devenvironment",
  "location": null,
  "name": "devenvironment",
  "properties": {
    "correlationId": "b5f4983b-e2fe-4319-9e06-e842c33763df",
    "debugSetting": null,
    "dependencies": [
      {
        "dependsOn": [
          {
            "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-dev/providers/Microsoft.Web/serverfarms/devplan",
            "resourceGroup": "zerobigRG-dev",
            "resourceName": "devplan",
            "resourceType": "Microsoft.Web/serverfarms"
          }
        ],
        "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-dev/providers/Microsoft.Web/sites/devapppqcusct5um6si",
        "resourceGroup": "zerobigRG-dev",
        "resourceName": "devapppqcusct5um6si",
        "resourceType": "Microsoft.Web/sites"
      }
    ],
    "duration": "PT33.0480811S",
    "mode": "Incremental",
    "onErrorDeployment": null,
    "outputResources": [
      {
        "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-dev/providers/Microsoft.Storage/storageAccounts/devstorepqcusct5um6si",
        "resourceGroup": "zerobigRG-dev"
      },
      {
        "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-dev/providers/Microsoft.Web/serverfarms/devplan",
        "resourceGroup": "zerobigRG-dev"
      },
      {
        "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-dev/providers/Microsoft.Web/sites/devapppqcusct5um6si",
        "resourceGroup": "zerobigRG-dev"
      }
    ],
    "outputs": {
      "storageEndpoint": {
        "type": "Object",
        "value": {
          "blob": "https://devstorepqcusct5um6si.blob.core.windows.net/",
          "dfs": "https://devstorepqcusct5um6si.dfs.core.windows.net/",
          "file": "https://devstorepqcusct5um6si.file.core.windows.net/",
          "queue": "https://devstorepqcusct5um6si.queue.core.windows.net/",
          "table": "https://devstorepqcusct5um6si.table.core.windows.net/",
          "web": "https://devstorepqcusct5um6si.z12.web.core.windows.net/"
        }
      }
    },
    "parameters": {
      "appServicePlanName": {
        "type": "String",
        "value": "devplan"
      },
      "linuxFxVersion": {
        "type": "String",
        "value": "php|7.0"
      },
      "location": {
        "type": "String",
        "value": "koreacentral"
      },
      "resourceTags": {
        "type": "Object",
        "value": {
          "Environment": "Dev",
          "Project": "Tutorial"
        }
      },
      "storagePrefix": {
        "type": "String",
        "value": "devstore"
      },
      "storageSKU": {
        "type": "String",
        "value": "Standard_LRS"
      },
      "webAppName": {
        "type": "String",
        "value": "devapp"
      }
    },
    "parametersLink": null,
    "providers": [
      {
        "id": null,
        "namespace": "Microsoft.Storage",
        "registrationPolicy": null,
        "registrationState": null,
        "resourceTypes": [
          {
            "aliases": null,
            "apiVersions": null,
            "capabilities": null,
            "locations": [
              "koreacentral"
            ],
            "properties": null,
            "resourceType": "storageAccounts"
          }
        ]
      },
      {
        "id": null,
        "namespace": "Microsoft.Web",
        "registrationPolicy": null,
        "registrationState": null,
        "resourceTypes": [
          {
            "aliases": null,
            "apiVersions": null,
            "capabilities": null,
            "locations": [
              "koreacentral"
            ],
            "properties": null,
            "resourceType": "serverfarms"
          },
          {
            "aliases": null,
            "apiVersions": null,
            "capabilities": null,
            "locations": [
              "koreacentral"
            ],
            "properties": null,
            "resourceType": "sites"
          }
        ]
      }
    ],
    "provisioningState": "Succeeded",
    "template": null,
    "templateHash": "18198432259854125308",
    "templateLink": null,
    "timestamp": "2019-12-15T02:52:14.890059+00:00"
  },
  "resourceGroup": "zerobigRG-dev",
  "type": "Microsoft.Resources/deployments"
}
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$

 

이제 프로덕션 환경에 배포한다.

resourceGroup="zerobigRG-prod"
location="koreacentral"



az group create \
  --name $resourceGroup \
  --location $location


templateFile="/mnt/c/AzureDevOps-Exercise/azuredeploy.json"

az group deployment create \
  --name prodenvironment \
  --resource-group $resourceGroup \
  --template-file $templateFile \
  --parameters azuredeploy.parameters.prod.json

 

위 코드 전체를 선택하고 Ctrl + '를 눌러 코드를 실행한다.

zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$ resourceGroup="zerobigRG-prod"
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$ location="koreacentral"
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$ az group create \
>   --name $resourceGroup \
>   --location $location
{
  "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-prod",
  "location": "koreacentral",
  "managedBy": null,
  "name": "zerobigRG-prod",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$ templateFile="/mnt/c/AzureDevOps-Exercise/azuredeploy.json"
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$ az group deployment create \
>   --name prodenvironment \
>   --resource-group $resourceGroup \
>   --template-file $templateFile \
>   --parameters azuredeploy.parameters.prod.json
{
  "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-prod/providers/Microsoft.Resources/deployments/prodenvironment",
  "location": null,
  "name": "prodenvironment",
  "properties": {
    "correlationId": "c6d4117c-xxxx-xxxx-xxxx-9053018e9499",
    "debugSetting": null,
    "dependencies": [
      {
        "dependsOn": [
          {
            "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-prod/providers/Microsoft.Web/serverfarms/contosoplan",
            "resourceGroup": "zerobigRG-prod",
            "resourceName": "contosoplan",
            "resourceType": "Microsoft.Web/serverfarms"
          }
        ],
        "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-prod/providers/Microsoft.Web/sites/contosowebapplvyaal3h7rlns",
        "resourceGroup": "zerobigRG-prod",
        "resourceName": "contosowebapplvyaal3h7rlns",
        "resourceType": "Microsoft.Web/sites"
      }
    ],
    "duration": "PT29.5087496S",
    "mode": "Incremental",
    "onErrorDeployment": null,
    "outputResources": [
      {
        "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-prod/providers/Microsoft.Storage/storageAccounts/contosodatalvyaal3h7rlns",
        "resourceGroup": "zerobigRG-prod"
      },
      {
        "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-prod/providers/Microsoft.Web/serverfarms/contosoplan",
        "resourceGroup": "zerobigRG-prod"
      },
      {
        "id": "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zerobigRG-prod/providers/Microsoft.Web/sites/contosowebapplvyaal3h7rlns",
        "resourceGroup": "zerobigRG-prod"
      }
    ],
    "outputs": {
      "storageEndpoint": {
        "type": "Object",
        "value": {
          "blob": "https://contosodatalvyaal3h7rlns.blob.core.windows.net/",
          "dfs": "https://contosodatalvyaal3h7rlns.dfs.core.windows.net/",
          "file": "https://contosodatalvyaal3h7rlns.file.core.windows.net/",
          "queue": "https://contosodatalvyaal3h7rlns.queue.core.windows.net/",
          "table": "https://contosodatalvyaal3h7rlns.table.core.windows.net/",
          "web": "https://contosodatalvyaal3h7rlns.z12.web.core.windows.net/"
        }
      }
    },
    "parameters": {
      "appServicePlanName": {
        "type": "String",
        "value": "contosoplan"
      },
      "linuxFxVersion": {
        "type": "String",
        "value": "php|7.0"
      },
      "location": {
        "type": "String",
        "value": "koreacentral"
      },
      "resourceTags": {
        "type": "Object",
        "value": {
          "Environment": "Production",
          "Project": "Tutorial"
        }
      },
      "storagePrefix": {
        "type": "String",
        "value": "contosodata"
      },
      "storageSKU": {
        "type": "String",
        "value": "Standard_GRS"
      },
      "webAppName": {
        "type": "String",
        "value": "contosowebapp"
      }
    },
    "parametersLink": null,
    "providers": [
      {
        "id": null,
        "namespace": "Microsoft.Storage",
        "registrationPolicy": null,
        "registrationState": null,
        "resourceTypes": [
          {
            "aliases": null,
            "apiVersions": null,
            "capabilities": null,
            "locations": [
              "koreacentral"
            ],
            "properties": null,
            "resourceType": "storageAccounts"
          }
        ]
      },
      {
        "id": null,
        "namespace": "Microsoft.Web",
        "registrationPolicy": null,
        "registrationState": null,
        "resourceTypes": [
          {
            "aliases": null,
            "apiVersions": null,
            "capabilities": null,
            "locations": [
              "koreacentral"
            ],
            "properties": null,
            "resourceType": "serverfarms"
          },
          {
            "aliases": null,
            "apiVersions": null,
            "capabilities": null,
            "locations": [
              "koreacentral"
            ],
            "properties": null,
            "resourceType": "sites"
          }
        ]
      }
    ],
    "provisioningState": "Succeeded",
    "template": null,
    "templateHash": "18198432259854125308",
    "templateLink": null,
    "timestamp": "2019-12-15T02:54:40.127571+00:00"
  },
  "resourceGroup": "zerobigRG-prod",
  "type": "Microsoft.Resources/deployments"
}
zerobig@winvm10:/mnt/c/AzureDevOps-Exercise$

 

 

 

 

 

배포 확인

Azure Portal에서 리소스 그룹을 탐색하여 배포를 확인할 수 있다.

  1. Azure Portal에 로그인한다.
  2. 왼쪽 메뉴에서 리소스 그룹을 선택한다.
  3. 배포한 리소스 그룹을 선택한다.
  4. 리소스 그룹을 선택하고 배포된 리소스를 살펴본다. 해당 환경에 대한 매개 변수 파일에 지정한 값과 일치하는 것을 확인한다.

 

 

 

 

 

리소스 정리

다음 실습부터는 Terraform에 대한 것을 다룰 것이므로 생성된 리소스 그룹을 삭제하여 배포된 리소스를 정리하는 것이 좋다.

  1. Azure Portal의 왼쪽 메뉴에서 리소스 그룹을 선택한다.
  2. 이름으로 필터링 필드에서 리소스 그룹 이름을 입력한다.
  3. 해당 리소스 그룹 이름을 선택한다.
  4. 위쪽 메뉴에서 리소스 그룹 삭제를 선택한다.

 

 

 

 

 

다음 단계

축하한다~!!! 지금까지 우리는 Azure Resource Manager 템플릿 만들기 및 배포 시리즈를 진행하면서 자신만의 고유한 템플릿을 만들고, 이 템플릿을 사용하여 리소스 배포를 자동화 보았다.

추가적인 템플릿에 대한 고급 개념의 실습은 각자에게 맡긴다.

다음 자습서에서는 ARM 템플릿을 생성하여 드디어 Azure DevOps를 통한 CI/CD 배포를 진행하고자 한다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함