연습 - Bicep을 사용하여 배포 스택 만들기 및 배포

완료됨

사용자는 새로운 예금 애플리케이션을 위한 스프린트 1에 있습니다. 개발 구독에서 관리되는 리소스를 사용하여 배포 스택을 만드는 프로세스를 테스트하려고 합니다. 이 연습에서는 Bicep 파일을 참조하는 리소스 그룹으로 범위가 지정된 배포 스택을 만듭니다. 파일은 Azure App Service 요금제와 Azure 앱 서비스를 정의합니다.

프로세스 중에 다음을 수행합니다.

  • 초기 아키텍처를 정의하는 Bicep 파일을 만듭니다.
  • Bicep 파일을 사용하여 리소스 그룹으로 범위가 지정된 배포 스택을 만듭니다.
  • 배포 스택 및 관리되는 리소스의 구성을 검토합니다.

이 연습에서는 Visual Studio Code용 Bicep 확장을 사용합니다. Visual Studio Code에서 해당 확장을 설치해야 합니다.

Bicep 파일 만들기

첫 번째 단계는 배포 스택과 함께 사용할 리소스를 정의하는 Bicep 파일을 만드는 것입니다.

  1. Visual Studio Code를 엽니다.

  2. main.bicep이라는 새 파일을 만듭니다.

  3. Visual Studio Code에서 Bicep 도구가 로드되도록 빈 파일을 저장합니다.

    파일>다른 이름으로 저장을 선택해도 되고 Windows에서 Ctrl+S(macOS는 ⌘+S) 키를 눌러도 됩니다. 파일을 저장한 위치를 기억해 두세요. 예를 들어, 파일을 저장할 templates 폴더를 만들 수 있습니다.

  4. 다음 Bicep 코드를 파일에 추가합니다. 곧 템플릿을 배포합니다. 도구가 Bicep 파일을 작성하는 데 어떤 도움을 주는지 확인할 수 있도록 복사하여 붙여넣는 대신, 코드를 직접 입력하는 것이 좋습니다.

    // 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() 함수를 포함하는 식을 사용하여 기본 매개 변수 값을 정의하고 있습니다. 이 템플릿을 배포하는 사용자는 배포 시 값을 지정하여 기본 매개 변수 값을 재정의할 수 있지만 변수 값을 재정의할 수는 없습니다.

    또한 Azure App Service 플랜 이름에는 변수를 사용하고 있지만 다른 이름에는 매개 변수를 사용합니다. 스토리지 계정 및 App Service 앱에는 전역적으로 고유한 이름이 필요하지만 App Service 요금제 이름은 해당 리소스 그룹 내에서만 고유하면 됩니다. 이러한 차이는 배포가 모두 다른 리소스 그룹으로 배치되는 한 여러 배포에서 동일한 App Service 플랜 이름을 사용할 걱정은 없다는 것을 의미합니다.

  5. 변경 내용을 파일에 저장합니다.

배포 스택을 만들고 리소스를 Azure에 배포

Azure에 해당 템플릿을 배포하려면 Visual Studio Code 터미널에서 Azure 계정에 로그인해야 합니다. Azure CLI 도구를 설치했는지 확인합니다.

  1. 터미널 메뉴에서 새 터미널을 선택합니다. 터미널 창은 일반적으로 화면의 아래쪽 절반에서 열립니다.

  2. 터미널 창의 오른쪽에 bash가 표시되면 올바른 셸이 이미 열려 있는 것입니다. 또는 오른쪽에 bash 셸 아이콘이 표시되면 해당 아이콘을 선택하여 셸을 시작할 수 있습니다.

    Bash 옵션이 표시된 Visual Studio Code 터미널 창의 스크린샷

    bash 이외의 셸이 나타나면 셸 드롭다운 화살표를 선택한 다음 Git Bash를 선택합니다.

    표시되어 있는 터미널 셸 드롭다운에서 Git Bash 기본값이 선택된 상태의 Visual Studio Code 터미널 창 스크린샷

  3. 터미널에서 템플릿을 저장한 디렉터리로 이동합니다. 예를 들어, templates 폴더에 템플릿을 저장한 경우 다음 명령을 사용할 수 있습니다.

    cd templates
    

Bicep 설치

다음 명령을 실행하여 최신 버전의 Bicep이 있는지 확인합니다.

az bicep install && az bicep upgrade

Azure CLI를 사용하여 Azure에 로그인

  1. Visual Studio Code 터미널에서 다음 명령을 실행하여 Azure에 로그인합니다.

    az login
    
  2. 열리는 브라우저에서 Azure 계정에 로그인합니다.

    Visual Studio Code 터미널에는 이 계정과 연결된 구독 목록이 표시됩니다.

  3. 목록에서 이 연습에 사용할 구독을 찾습니다.

    로그인에서 목록을 누락한 경우 다음 조각을 사용하여 구독을 다시 나열할 수 있습니다.

    az account list --output table
    
  4. 이 세션에서 실행하는 모든 Azure CLI 명령에 대한 기본 구독을 설정합니다.

    az account set --subscription "Your Subscription Name or ID"
    

리소스 그룹 만들기

배포 스택 및 관리되는 리소스에 대한 리소스 그룹을 만들어야 합니다. 리소스 그룹을 만들려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

az group create \
    --name rg-depositsApplication \
    --location eastus

Azure에 이 템플릿을 배포하려면 Visual Studio Code 터미널에서 Azure 계정에 로그인합니다. Azure PowerShell을 설치했는지 확인합니다.

  1. 터미널 메뉴에서 새 터미널을 선택합니다. 터미널 창은 일반적으로 화면의 아래쪽 절반에서 열립니다.

  2. 터미널 창의 오른쪽에 pwsh 또는 powershell이 표시되면 올바른 셸이 이미 열려 있는 것입니다. 또는 오른쪽에 PowerShell 셸 아이콘이 표시되면 해당 아이콘을 선택하여 셸을 시작할 수 있습니다.

    셸 드롭다운 목록에 pwsh 옵션이 표시된 Visual Studio Code 터미널 창의 스크린샷.

    pwsh 또는 powershell이 아닌 셸이 나타나면 셸 드롭다운 화살표를 선택한 후 PowerShell을 선택합니다.

    터미널 셸 드롭다운 목록이 표시되고 PowerShell이 선택되어 있는 Visual Studio Code 터미널 창의 스크린샷.

  3. 터미널에서 템플릿을 저장한 디렉터리로 이동합니다. 예를 들어, templates 폴더에 템플릿을 저장한 경우 다음 명령을 사용할 수 있습니다.

    Set-Location -Path templates
    

Bicep CLI 설치

Azure PowerShell에서 Bicep을 사용하려면 Bicep CLI를 설치합니다.

Azure PowerShell을 사용하여 Azure에 로그인

  1. Visual Studio Code 터미널에서 다음 명령을 실행하여 Azure에 로그인합니다.

    Connect-AzAccount
    
  2. 열리는 브라우저에서 Azure 계정에 로그인합니다.

  3. 다음 명령을 실행하여 이 연습에 사용할 구독의 ID를 가져옵니다.

    Get-AzSubscription
    

    구독 ID는 두 번째 열입니다. 두 번째 열을 복사합니다. aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e와 비슷하게 보입니다.

  4. 이 세션에서 실행하는 모든 Azure PowerShell 명령에 대한 기본 구독을 설정합니다.

    Set-AzContext -SubscriptionId {Your subscription ID}
    

리소스 그룹 만들기

배포 스택 및 관리되는 리소스에 대한 리소스 그룹을 만들어야 합니다. 리소스 그룹을 만들려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

New-AzResourceGroup `
    -Name rg-depositsApplication `
    -Location eastus

배포 스택 만들기

다음으로, 최근에 만들어진 리소스 그룹으로 범위가 지정된 배포 스택을 만들어야 합니다. 배포 스택을 만들려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none
New-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep `
    -ActionOnUnmanage DetachAll `
    -DenySettingsMode None

배포 스택 및 관리되는 리소스 만들기 확인

배포 스택과 해당 관리되는 리소스를 만들 때 명령줄이나 Azure Portal을 사용하여 해당 구성을 볼 수 있습니다. 이 연습에서는 Azure CLI를 사용합니다. 배포 스택의 구성을 보려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

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

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

{
  "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"
}

출력의 리소스 섹션을 확인합니다. 각 리소스에 대해 상태는 "관리됨", 리소스 그룹, 리소스 ID 및 거부 설정으로 표시됩니다.

배포 스택과 해당 관리되는 리소스를 만들 때 명령줄이나 Azure Portal을 사용하여 해당 구성을 볼 수 있습니다. 이 연습에서는 Azure PowerShell을 사용합니다. 배포 스택의 구성을 보려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

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

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

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가 표시됩니다.