연습 - 배포 스택 업데이트 및 삭제

완료됨

사용자는 새로운 예금 애플리케이션을 위한 스프린트 2에 있습니다. Bicep 파일에서 Azure SQL 데이터베이스를 정의하여 배포 스택 업데이트를 테스트하려고 합니다. 스택이 새로 정의된 리소스를 관리하고 있는지 확인하려고 합니다.

이 연습에서는 새 리소스를 포함하도록 이전에 만든 Bicep 파일을 업데이트합니다. 또한 리소스를 관리하는 배포 스택을 업데이트하고 삭제합니다.

  • Azure SQL 데이터베이스를 포함하도록 Bicep 파일을 업데이트합니다.
  • 새 데이터베이스를 배포하도록 배포 스택을 업데이트합니다.
  • 배포 스택의 관리되는 리소스의 유효성을 검사합니다.
  • 배포 스택 및 관리되는 리소스를 삭제합니다.
  • 배포 스택 및 관리되는 리소스의 삭제 유효성을 검사합니다.

Azure SQL 데이터베이스를 포함하도록 Bicep 파일 업데이트

  1. Visual Studio Code에서 main.bicep 파일을 엽니다.

  2. 강조 표시된 코드를 파일의 매개 변수 섹션에 추가합니다.

    // 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'
    
  3. 이 파일의 맨 아래에 다음 코드를 추가합니다.

    // 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'
      }
    }
    
  4. 변경 내용을 파일에 저장합니다.

배포 스택 업데이트

Bicep 파일이 업데이트되면 새 Azure SQL 데이터베이스가 관리되는 리소스로 환경에 배포되도록 배포 스택을 업데이트하려고 합니다.

  1. 배포 스택을 업데이트하려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

    az stack group create \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --template-file ./main.bicep \
        --action-on-unmanage deleteAll \
        --deny-settings-mode none
    
  2. 현재 구독에 스택이 이미 존재한다는 메시지가 표시됩니다. 관리되지 않는 작업 매개 변수의 값이 변경되면 경고가 새 값을 알려 줍니다. y을(를) 누른 다음 'Enter'를 누릅니다.

    배포 스택이 이미 존재한다는 Azure CLI 명령줄 경고를 보여 주는 스크린샷.

  3. sqlServerAdminUserName 값을 입력하라는 메시지가 표시됩니다. SQL Server 관리자의 이름을 만든 다음 'Enter'를 누르세요.

    SQL Server 관리자 사용자 이름을 입력하라는 Azure CLI 명령줄을 보여 주는 스크린샷.

  4. sqlServerAdminPassword 값을 입력하라는 메시지가 표시됩니다. SQL Server 관리자를 위한 복잡한 비밀번호를 만든 다음 'Enter'를 누르세요.

    SQL Server 관리자 비밀번호를 입력하라는 Azure CLI 명령줄을 보여 주는 스크린샷.

다음 작업으로 이동하기 전에 업데이트 작업이 완료되기를 기다립니다.

Bicep 파일이 업데이트되면 새 Azure SQL 데이터베이스가 관리되는 리소스로 환경에 배포되도록 배포 스택을 업데이트하려고 합니다.

  1. 배포 스택을 업데이트하려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

    Set-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DeleteAll `
        -DenySettingsMode none
    
  2. sqlServerAdminUserName 값을 입력하라는 메시지가 표시됩니다. SQL Server 관리자의 이름을 만든 다음 'Enter'를 누르세요.

    SQL Server 관리자 사용자 이름을 입력하라는 Azure PowerShell 명령줄을 보여 주는 스크린샷.

  3. sqlServerAdminPassword 값을 입력하라는 메시지가 표시됩니다. SQL Server 관리자를 위한 복잡한 비밀번호를 만든 다음 'Enter'를 누르세요.

    SQL Server 관리자 비밀번호를 입력하라는 Azure PowerShell 명령줄을 보여 주는 스크린샷.

  4. 다음 작업으로 이동하기 전에 업데이트 작업이 완료되기를 기다리세요.

배포 스택 및 관리되는 리소스에 대한 업데이트 확인

업데이트가 완료되면 배포 스택이 Azure SQL 데이터베이스를 관리하고 있는지 확인하려고 합니다. 배포 스택의 구성을 보려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

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,
  "parameters": {
    "sqlServerAdminPassword": {
      "reference": null,
      "type": "securestring",
      "value": ""
    },
    "sqlServerAdminUserName": {
      "reference": null,
      "type": "string",
      "value": "sqladmin"
    }
  },
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "rg-depositsApplication",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq/databases/sqldb-eque2jlrboltq",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    },
    {
      "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"
}

출력의 리소스 섹션을 확인합니다. 이제 관리되는 리소스로 나열된 SQL Server 및 SQL 데이터베이스가 표시됩니다.

업데이트가 완료되면 배포 스택이 Azure SQL 데이터베이스를 관리하고 있는지 확인하려고 합니다. 배포 스택의 구성을 보려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

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
                                /subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq
                                /subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq/databases/sqldb-eque2jlrboltq
Parameters                    : 
                                Name                      Type                       Value     
                                ========================  =========================  ==========
                                sqlServerAdminUserName    string                     "sqladmin"
                                sqlServerAdminPassword    securestring               ""

출력의 리소스 섹션을 확인합니다. 이제 관리되는 리소스로 나열된 SQL Server 및 SQL 데이터베이스가 표시됩니다.

배포 스택 삭제

  1. 배포 스택 및 관리되는 리소스를 삭제하려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

    az stack group delete \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --action-on-unmanage deleteAll
    
  2. 스택 및 지정된 리소스를 삭제할지 확인하라는 메시지가 표시됩니다.

    Azure CLI를 사용하여 배포 스택을 삭제하는 명령줄 확인을 보여 주는 스크린샷.

  3. 삭제 작업이 완료되면 Azure Portal을 열고 배포 스택 및 해당 리소스가 제거되었는지 확인합니다.

  4. 이러한 연습에 사용되는 리소스 그룹을 삭제하려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

    az group delete \
        -name rg-depositsApplication
    
  5. 리소스 그룹을 제거할지 확인하라는 메시지가 표시됩니다. 'Y'를 누른 다음 'Enter'를 누릅니다.

    Azure CLI를 사용하여 리소스 그룹을 삭제하는 명령줄 확인을 보여 주는 스크린샷.

  1. 배포 스택 및 관리되는 리소스를 삭제하려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

    Remove-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -ActionOnUnmanage DeleteAll
    
  2. 스택 및 지정된 리소스를 삭제할지 확인하라는 메시지가 표시됩니다.

    Azure PowerShell을 사용하여 배포 스택을 삭제하는 명령줄 확인을 보여 주는 스크린샷.

  3. 삭제 작업이 완료되면 Azure Portal을 열고 배포 스택 및 해당 리소스가 제거되었는지 확인합니다.

  4. 이러한 연습에 사용되는 리소스 그룹을 삭제하려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

    Remove-AzResourceGroup `
        -Name rg-depositsApplication
    
  5. 리소스 그룹을 제거할지 확인하라는 메시지가 표시됩니다. 'Y'를 누른 다음 'Enter'를 누릅니다.

    Azure PowerShell을 사용하여 리소스 그룹을 삭제하는 명령줄 확인을 보여 주는 스크린샷.