배포 스택 만들기

완료됨

Azure 배포 스택은 여러 리소스 그룹 또는 구독에 걸쳐 있더라도 단일 단위로 관리할 수 있는 Azure 리소스 컬렉션입니다.

새 예금 애플리케이션의 테스트 버전 배포를 계획하고 있습니다. 배포 스택을 만들고 해당 관리되는 리소스를 확인하는 방법에 대해 자세히 알아봐야 합니다.

이 단원에서는 배포 스택을 만들고, 배포를 확인하고, 환경의 모든 배포 스택을 나열하는 방법을 알아봅니다.

참고 항목

이 단원의 명령은 개념을 설명하기 위해 표시된 것입니다. 명령을 아직 실행하지 마세요. 여기에서 학습하는 내용을 곧 연습할 예정입니다.

배포 스택 재검토

배포 스택은 리소스 그룹 및 구독 전반에서 리소스 구성에 대해 생각하는 방식을 변경합니다. 배포 스택을 사용하면 Azure 리소스 조직 계층 구조의 위치에 관계없이 애플리케이션을 구성하는 모든 리소스를 그룹화할 수 있습니다. 하나의 단위로 관리할 수 있습니다. 배포 스택을 사용하면 스택을 구성하는 리소스 컬렉션에 대해 수명 주기 작업을 수행할 수 있습니다.

리소스 그룹 범위 배포 스택에 의해 관리되는 애플리케이션과 해당 애플리케이션을 나타내는 그래픽입니다.

배포 스택을 애플리케이션의 리소스를 단일 단위로 그룹화하는 일련의 포인터라고 생각해 보세요. 배포 스택은 리소스 그룹, 구독, 관리 그룹 등 다양한 범위에서 만들어질 수 있습니다.

리소스 정의

배포 스택은 스택의 리소스를 정의하기 위해 Bicep 파일, ARM JSON 템플릿 또는 템플릿 사양의 사용을 지원합니다. Azure CLI 또는 Azure PowerShell을 사용하여 배포 스택을 만들 때 특정 템플릿 파일(Bicep 파일 또는 ARM JSON 템플릿) 또는 템플릿 사양을 가리킬 수 있습니다. 리소스를 정의하는 방법을 변경할 필요는 없습니다.

첫 번째 배포 스택에는 다음 Bicep 파일을 사용합니다. 파일은 App Service 요금제와 웹앱을 정의합니다. 이러한 리소스는 배포 스택을 만들 때 관리되는 리소스가 됩니다.

// Parameters
@description('The location for all resources.')
param location string = 'eastus'

@description('The name of the web application.')
param webApplicationName string = 'webapp-${uniqueString(resourceGroup().id)}'

// Variables
@description('The name of the app service plan.')
var appServicePlanName = 'plan-deposits'

// Resource - App Service Plan
resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
  name: appServicePlanName
  location: location
  sku: {
    name: 'F1'
    capacity: 1
  }
}

// Resource - Web App
resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
  name: webApplicationName
  location: location
  properties: {
    serverFarmId: appServicePlan.id
  }
}

참고 항목

${uniqueString(resourceGroup().id)} 매개 변수에서 webApplicationName 구문을 확인할 수 있습니다. UniqueString 함수는 리소스 그룹의 ID를 기반으로 문자열을 만들고 이를 webapp-deposits에 접미사로 추가합니다. 많은 Azure 서비스에는 고유한 이름이 필요합니다. 이 함수는 고유한 이름을 생성하는 데 도움이 됩니다.

배포 스택 만들기

배포 스택과 해당 리소스를 만들고 배포하는 것은 표준 Azure 배포와 거의 동일합니다. Azure CLI, Azure PowerShell 또는 코드 제공 인프라 파이프라인 중 어느 것을 사용하든 프로세스는 거의 동일합니다. 예시:

Bicep 파일을 리소스 그룹에 배포하는 Azure CLI 명령은 다음과 같습니다.

az deployment group create \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep

리소스 그룹 범위에서 배포 스택을 만드는 Azure CLI 명령은 다음과 같습니다.

az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none

명령의 유일한 변경 내용은 deploymentstack이라는 단어와 사용된 매개 변수의 차이점입니다. 구독 및 관리 그룹에 대한 배포의 경우에도 마찬가지입니다.

참고 항목

이후 모듈에서는 --action-on-unmanage를 사용하여 배포 스택의 리소스를 관리하는 방법과 --deny-settings-mode를 사용하여 원치 않는 변경을 방지하는 방법을 살펴봅니다.

Bicep 파일을 리소스 그룹에 배포하는 Azure PowerShell 명령은 다음과 같습니다.

New-AzResourceGroupDeployment `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep

리소스 그룹 범위에서 배포 스택을 만드는 Azure PowerShell 명령은 다음과 같습니다.

New-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep `
    -ActionOnUnmanage DetachAll `
    -DenySettingsMode None

명령에서 유일한 변경 내용은 stack이라는 단어와 사용된 매개 변수의 차이점입니다. 구독 및 관리 그룹에 대한 배포의 경우에도 마찬가지입니다.

참고 항목

이후 모듈에서는 -ActionOnUnmanage를 사용하여 배포 스택의 리소스를 관리하는 방법과 -DenySettingsMode를 사용하여 원치 않는 변경을 방지하는 방법을 살펴봅니다.

이제 리소스 그룹 범위에서 배포 스택을 만드는 방법을 살펴보겠습니다.

Azure CLI를 사용하여 배포 스택을 만들려면 az stack group create 명령을 사용합니다. 다음 명령은 먼저 rg-depositsApplication이라는 리소스 그룹을 만든 다음 리소스 그룹 범위에 배포 스택을 만듭니다.

az group create \
    --name rg-depositsApplication \
    --location eastus
az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none

Azure PowerShell을 사용하여 배포 스택을 만들려면 New-AzResourceGroupDeploymentStack 명령을 사용합니다. 다음 명령은 먼저 rg-depositsApplication이라는 리소스 그룹을 만든 다음 리소스 그룹 범위에 배포 스택을 만듭니다.

New-AzResourceGroup `
    -Name rg-depositsApplication `
    -Location eastus
New-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep `
    -ActionOnUnmanage DetachAll `
    -DenySettingsMode None

배포 스택 표시

리소스 그룹에는 범위가 지정된 여러 배포 스택이 있을 수 있습니다. 리소스 그룹으로 범위가 지정된 특정 배포 스택에 대한 세부 정보를 표시할 수 있습니다.

Azure CLI를 사용하여 리소스 그룹으로 범위가 지정된 특정 배포 스택 리소스를 표시하려면 az stack group show 명령을 사용하여 배포 스택 이름과 대상 리소스 그룹을 지정합니다.

az stack group show \
    --resource-group rg-depositsApplication \
    --name stack-deposits

결과에는 배포 스택의 속성과 관리되는 리소스의 상태가 포함됩니다. 출력은 다음 섹션과 유사하게 나타납니다.

{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "bypassStackOutOfSyncError": null,
  "correlationId": ".",
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deployments/stack-deposits",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT2M53.2734284S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deploymentStacks/stack-deposits",
  "location": null,
  "name": "stack-deposits",
  "outputs": null,
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "rg-depositsApplication",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-eque2jlrboltq",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2024-01-01T00:00:01.000000+00:00",
    "createdBy": "depositsapplication@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2024-01-01T00:00:01.000000+00:00",
    "lastModifiedBy": "depositsapplication@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": {},
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

출력의 리소스 섹션을 확인합니다. 각 리소스의 상태가 managed, 리소스 그룹, 리소스 ID 및 거부 설정으로 표시됩니다.

Azure PowerShell을 사용하여 리소스 그룹으로 범위가 지정된 특정 배포 스택 리소스를 표시하려면 Get-AzResourceGroupDeploymentStack 명령을 사용하여 배포 스택 이름과 대상 리소스 그룹을 지정합니다.

Get-AzResourceGroupDeploymentStack `
    -ResourceGroupName rg-depositsApplication `
    -Name stack-deposits

결과에는 배포 스택의 속성과 관리되는 리소스의 상태가 포함됩니다. 출력은 다음 섹션과 유사하게 나타납니다.

Id                            : /subscriptions/././rg-depositsApplication/././deploymentStacks/stack-deposits
Name                          : stack-deposits
ProvisioningState             : succeeded
resourcesCleanupAction        : detach
resourceGroupsCleanupAction   : detach
managementGroupsCleanupAction : detach
CorrelationId                 : .
DenySettingsMode              : none
CreationTime(UTC)             : 1/01/2024 0:00:01 AM
DeploymentId                  : /subscriptions/././rg-depositsApplication/././deployments/stack-deposits
Resources                     : /subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits
                                /subscriptions/././rg-depositsApplication/././sites/webapp-eque2jlrboltq

출력의 리소스 섹션을 확인합니다. 배포 스택에서 관리하는 리소스를 정의합니다. 각 리소스의 전체 리소스 ID가 표시됩니다.

Azure Portal에서 배포 스택을 볼 수도 있습니다. 해당 범위에서 사용할 수 있습니다. 리소스 그룹의 경우 배포 스택 범위가 지정된 리소스 그룹으로 이동합니다. 설정 아래에 배포 스택 옵션이 표시됩니다.

리소스 그룹의 설정과 배포 스택을 찾을 수 있는 위치를 보여 주는 Azure Portal의 스크린샷.

배포 스택을 클릭하면 리소스 그룹으로 범위가 지정된 모든 스택이 나열됩니다. 배포 스택을 클릭하면 배포 스택의 속성 페이지로 이동됩니다.

Azure Portal에서 관리되는 리소스를 포함하여 배포 스택의 속성을 보여 주는 스크린샷.

배포 스택 나열

특정 리소스 그룹으로 범위가 지정된 모든 배포 스택을 나열할 수도 있습니다.

Azure CLI를 사용하여 리소스 그룹으로 범위가 지정된 모든 배포 스택 리소스를 나열하려면 az stack group list 명령을 사용하여 대상 리소스 그룹을 지정합니다.

az stack group list \
    --resource-group rg-depositsApplication

Azure PowerShell을 사용하여 리소스 그룹으로 범위가 지정된 모든 배포 스택 리소스를 나열하려면 Get-AzResourceGroupDeploymentStack 명령을 사용하여 대상 리소스 그룹을 지정합니다.

Get-AzResourceGroupDeploymentStack `
    -ResourceGroupName rg-depositsApplication

참고 항목

Azure PowerShell은 표시 작업과 목록 작업 모두에 동일한 명령인 Get-AzResourceGroupDeploymentStack을 사용합니다.