배포 스택의 리소스 업데이트
애플리케이션이 발전함에 따라 해당 리소스도 발전합니다. 새로운 서비스와 기능이 추가되면 배포 스택과 해당 관리되는 리소스를 어떻게 업데이트하나요? 어떤 상황에서 배포 스택을 업데이트해야 하나요?
예금 애플리케이션은 상당한 변화가 일어나고 있습니다. Azure 리소스 속성을 수정해야 하고, 새 리소스를 추가해야 하며, 기존 리소스를 제거해야 합니다. 배포 스택을 업데이트하는 시기와 기존 관리되는 리소스를 업데이트하는 방법에 대해 자세히 알아야 합니다.
이 단원에서는 배포 스택을 업데이트해야 하는 상황에 대해 알아봅니다. 또한 배포 스택이 관리하는 리소스를 수정하는 방법도 알아봅니다.
참고 항목
이 단원의 명령은 개념을 설명하기 위해 표시된 것입니다. 명령을 아직 실행하지 마세요. 여기에서 학습하는 내용을 곧 연습할 예정입니다.
배포 스택 업데이트
시간이 지남에 따라 애플리케이션을 구성하는 리소스가 변경됩니다. 기존 리소스의 속성을 수정해야 하거나, 리소스를 추가 또는 삭제해야 하거나, 애플리케이션에서 다른 방법을 통해 배포된 리소스를 통합해야 합니다. 배포 스택을 업데이트하여 애플리케이션의 변경 내용을 구현할 수 있습니다. 어떤 상황에서 배포 스택을 업데이트해야 하나요?
- 관리되는 리소스의 속성 수정
- 기존 리소스를 관리되는 리소스로 추가
- 새로운 관리되는 리소스 추가
- 관리되는 리소스 분리
- 관리되는 리소스 삭제
이러한 변화는 어떻게 구현되나요? 마지막 모듈에서 토론했듯이 배포 스택은 Bicep 파일, ARM JSON 템플릿 또는 템플릿 사양에 정의된 리소스를 관리합니다. 배포 스택을 만들 때 이러한 파일 중 하나를 참조하여 리소스를 배포합니다. 배포 스택을 업데이트하는 것도 마찬가지입니다. 배포 스택이 관리하는 리소스를 업데이트하려면 기본 템플릿 파일을 업데이트합니다.
기존 관리되는 리소스 업데이트
Azure에 배포된 리소스를 수정하는 것은 일반적인 사례입니다. 새로운 기능을 통합하거나 기능을 향상시키려면 리소스의 속성 값을 변경해야 할 수도 있습니다. 현재 Azure에서 코드 제공 인프라를 사용하여 리소스를 정의하고 있다면 리소스의 속성을 수정하는 방법을 알고 있을 것입니다. 배포 스택의 경우 프로세스는 동일합니다. Bicep 파일의 리소스를 변경하고 스택에서 업데이트 작업을 실행합니다.
지난 모듈에서 다루었던 Bicep 파일을 살펴보겠습니다. 이 파일은 App Service 요금제, 웹앱, Azure SQL 서버 및 데이터베이스를 정의합니다. App Service 요금제의 SKU를 F1
SKU에서 S1
SKU로 수정하려고 합니다.
// Parameters
@description('The location for all resources.')
param location string = 'eastus'
@description('The name of the SQL database.')
param sqlDatabaseName string = 'sqldb-${uniqueString(resourceGroup().id)}'
@description('The password of the admin user.')
param sqlServerAdminUserName string
@description('The name of the admin user.')
@secure()
param sqlServerAdminPassword string
@description('The name of the SQL server.')
param sqlServerName string = 'sql-${uniqueString(resourceGroup().id)}'
@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: 'S1'
capacity: 1
}
}
// Resource - Web App
resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
name: webApplicationName
location: location
properties: {
serverFarmId: appServicePlan.id
}
}
// Resource - SQL Server
resource sqlServer 'Microsoft.Sql/servers@2021-11-01' ={
name: sqlServerName
location: location
properties: {
administratorLogin: sqlServerAdminUserName
administratorLoginPassword: sqlServerAdminPassword
}
}
// Resource - SQL Database
resource sqlServerDatabase 'Microsoft.Sql/servers/databases@2021-11-01' = {
parent: sqlServer
name: sqlDatabaseName
location: location
sku: {
name: 'Standard'
tier: 'Standard'
}
}
Bicep 파일을 수정하여 Bicep 파일의 리소스에 대한 변경 내용이 구현되도록 배포 스택을 업데이트하려고 합니다.
Azure CLI를 사용하여 배포 스택을 업데이트하려면 az stack group create
명령을 사용합니다.
az stack group create \
--name stack-deposits \
--resource-group rg-depositsApplication \
--template-file ./main.bicep \
--action-on-unmanage detachAll \
--deny-settings-mode none
스택 업데이트가 완료된 후 App Service 요금제가 이제 S1
SKU에서 실행 중인지 확인하려고 합니다.
Azure CLI를 사용하여 App Service 요금제의 구성을 보려면 az appservice plan show
명령을 사용합니다.
az appservice plan show \
--name plan-deposits
--resource-group rg-depositsApplication
출력은 업데이트가 성공적이었으며 App Service 요금제가 이제 S1
SKU에서 실행 중임을 보여 줍니다.
"sku": {
"capacity": 1,
"family": "S",
"name": "S1",
"size": "S1",
"tier": "Standard"
},
Bicep 파일을 수정하여 Bicep 파일의 리소스에 대한 변경 내용이 구현되도록 배포 스택을 업데이트하려고 합니다.
Azure PowerShell을 사용하여 배포 스택을 업데이트하려면 Set-AzResourceGroupDeploymentStack
명령을 사용합니다.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
스택 업데이트가 완료된 후 App Service 요금제가 이제 S1
SKU에서 실행 중인지 확인하려고 합니다.
Azure PowerShell을 사용하여 App Service 요금제의 구성을 보려면 Get-AzAppServicePlan
명령을 사용합니다.
$plan = Get-AzAppServicePlan `
-ResourceGroupName rg-depositsApplication `
-Name plan-deposits
$sku = $plan.Sku
$sku
출력은 업데이트가 성공적이었으며 App Service 요금제가 이제 S1
SKU에서 실행 중임을 보여 줍니다.
Name : S1
Tier : Standard
Size : S1
Family : S
Capacity : 1