다음을 통해 공유


Azure에서 리소스를 만들고 관리할 어떻게 할까요? 있나요?

Azure는 애플리케이션에서 사용하는 Azure 리소스를 만들고 관리하는 다양한 도구를 제공합니다.

다양한 도구는 다양한 사용 사례를 지원하도록 설계되었으며, 대부분의 Azure 개발자는 수행해야 하는 작업에 따라 다양한 도구의 조합을 사용합니다. 예를 들어 다음을 수행할 수 있습니다.

  • 새 애플리케이션에 대한 Azure 리소스의 프로토타입을 만들 때는 Azure Portal 또는 VS Code 용 Azure Tools 확장과 같은 GUI 도구를 사용합니다. GUI 도구는 새 서비스를 만드는 프로세스를 안내하고 드롭다운 메뉴 및 기타 그래픽 요소를 사용하여 서비스에 대한 옵션을 검토하고 선택할 수 있도록 합니다.

  • Azure CLI 또는 Azure PowerShell 을 사용하여 일반적인 작업을 자동화하는 스크립트를 작성합니다. 예를 들어 Azure 앱 Service, 데이터베이스 및 Blob Storage로 구성된 새 웹 애플리케이션에 대한 기본 개발 환경을 만드는 스크립트를 만들 수 있습니다. 스크립트를 작성하면 리소스가 매번 동일한 방식으로 생성되고 UI를 클릭하는 것보다 더 빠르게 실행됩니다.

  • IaC(Infrastructure as Code) 도구를 사용하여 Azure 리소스를 선언적으로 배포하고 관리합니다. Terraform, Ansible 또는 Bicep과 같은 도구를 사용하면 선언적 구문으로 솔루션에 필요한 Azure 리소스를 명문화하여 환경 간에 Azure 리소스를 일관되게 배포하고 환경 드리프트를 방지할 수 있습니다.

Azure Portal

Azure Portal은 Azure 리소스를 관리하도록 설계된 웹 기반 인터페이스입니다. Azure Portal 기능:

  • Azure 리소스를 만들고 관리하기 위한 사용하기 쉬운 웹 기반 UI
  • 구성 가능한 대시보드를 만드는 기능
  • 구독 설정 및 청구 정보에 대한 액세스

A screenshot showing the Azure portal.

VS Code Azure 도구 확장 팩

Visual Studio Code를 사용하는 개발자는 VS Code용 Azure 도구 확장 팩사용하여 VS Code에서 바로 Azure 리소스를 관리할 수 있습니다. Azure 도구 확장 팩을 사용하면 다음을 수행할 수 있습니다.

  • Azure 앱 Service를 사용하여 코드를 만들고 관리하고 웹 사이트에 배포합니다.
  • Azure 데이터베이스 만들기, 찾아보기 및 쿼리
  • VS Code에서 직접 Azure Functions 만들기, 디버그 및 배포
  • VS Code에서 컨테이너화된 애플리케이션 배포

A screenshot showing Visual Studio Code with the Azure Tools extension pack installed.

명령줄 도구.

명령줄 도구는 효율성, 반복성 및 되풀이 작업을 스크립팅하는 기능의 이점을 제공합니다. Azure는 선택할 수 있는 두 가지 명령줄 도구를 제공합니다. Azure CLI 및 Azure PowerShell은 기능적으로 동일합니다. 개별 워크플로에 가장 적합한 도구를 선택하고 사용해야 합니다.

Azure CLI

Azure CLI는 Windows, Linux 및 macOS에서 실행되는 플랫폼 간 명령줄 도구입니다. Azure CLI:

  • Azure 리소스를 관리하기 위한 간결하고 효율적인 구문을 제공합니다.
  • 결과를 JSON으로 출력합니다(기본적으로). 결과는 YAML, ASCII 테이블 또는 키가 없는 탭으로 구분된 값으로 서식을 지정할 수도 있습니다.
  • JMESPath 쿼리를 사용하여 출력을 쿼리하고 셰이프하는 기능을 제공합니다.

Azure CLI 명령은 Bash와 같은 인기 있는 스크립팅 언어에 쉽게 통합되어 일반적인 작업을 스크립팅할 수 있습니다.

LOCATION='eastus'                                        
RESOURCE_GROUP_NAME='msdocs-expressjs-mongodb-tutorial'

WEB_APP_NAME='msdocs-expressjs-mongodb-123'
APP_SERVICE_PLAN_NAME='msdocs-expressjs-mongodb-plan-123'    
RUNTIME='NODE|14-lts'

# Create a resource group
az group create \
    --location $LOCATION \
    --name $RESOURCE_GROUP_NAME

# Create an app service plan
az appservice plan create \
    --name $APP_SERVICE_PLAN_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --sku B1 \
    --is-linux

# Create the web app in the app service
az webapp create \
    --name $WEB_APP_NAME \
    --runtime $RUNTIME \
    --plan $APP_SERVICE_PLAN_NAME \
    --resource-group $RESOURCE_GROUP_NAME 

Azure PowerShell

Azure PowerShell은 PowerShell 에서 직접 Azure 리소스를 관리하기 위한 cmdlet 집합입니다. Azure PowerShell은 PowerShell 모듈로 설치되며 Windows, macOS 및 Linux를 비롯한 모든 플랫폼에서 PowerShell 7.0.6 LTS 및 PowerShell 7.1.3 이상에서 작동합니다. Windows PowerShell 5.1과도 호환됩니다.

Azure PowerShell은 PowerShell 언어와 긴밀하게 통합되어 있습니다. 명령은 동사 명사 형식을 따르고 데이터는 PowerShell 개체로 반환됩니다. PowerShell 스크립팅에 이미 익숙한 경우 Azure PowerShell은 자연스러운 선택입니다.

$location = 'eastus'
$resourceGroupName = 'msdocs-blob-storage-demo-azps'
$storageAccountName = 'stblobstoragedemo999'

# Create a resource group
New-AzResourceGroup `
    -Location $location `
    -Name $resourceGroupName

# Create the storage account
New-AzStorageAccount `
    -Name $storageAccountName `
    -ResourceGroupName $resourceGroupName `
    -Location $location `
    -SkuName Standard_LRS

Azure CLI와 Azure PowerShell 중에서 선택하는 방법에 대한 자세한 내용은 올바른 명령줄 도구 선택 문서를 참조하세요.

코드로서의 인프라 도구

코드 로서의 인프라는 선언적 구성 파일을 통해 리소스를 관리하고 프로비전하는 프로세스입니다. 코드 도구로서의 인프라는 선언적 최종 상태 사양을 사용하여 매번 동일한 방식으로 리소스 집합을 만들고 구성하도록 보장합니다. 또한 코드 도구로서의 대부분의 인프라는 리소스를 모니터링하여 리소스가 원하는 상태로 기본 구성되었는지 확인합니다.

자동화되고 반복되며 신뢰할 수 있는 인프라 배포의 경우 다양한 인프라를 코드 도구로 Azure 지원.

Bicep

Bicep은 선언적 구문을 사용하여 Azure 리소스를 배포하는 DSL(도메인 특정 언어)입니다. 간결한 구문, 신뢰할 수 있는 형식 안전성 및 코드 다시 사용에 대한 지원을 제공합니다.

param location string = resourceGroup().location
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

Terraform

Hashicorp Terraform은 클라우드 인프라를 프로비전하고 관리하기 위한 오픈 소스 도구입니다. 클라우드 리소스의 토폴로지를 설명하는 구성 파일의 인프라를 체계화합니다. Terraform CLI는 구성 파일을 Azure에 배포하고 버전을 지정하는 간단한 메커니즘을 제공합니다.

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "main" {
  name     = "${var.prefix}-resources"
  location = var.location
}

resource "azurerm_app_service_plan" "main" {
  name                = "${var.prefix}-asp"
  location            = azurerm_resource_group.main.location
  resource_group_name = azurerm_resource_group.main.name
  kind                = "Linux"
  reserved            = true

  sku {
    tier = "Standard"
    size = "S1"
  }
}

resource "azurerm_app_service" "main" {
  name                = "${var.prefix}-appservice"
  location            = azurerm_resource_group.main.location
  resource_group_name = azurerm_resource_group.main.name
  app_service_plan_id = azurerm_app_service_plan.main.id

  site_config {
    linux_fx_version = "NODE|10.14"
  }
}

Ansible

Ansible 은 클라우드 프로비저닝, 구성 관리 및 애플리케이션 배포를 자동화하는 오픈 소스 제품입니다. Ansible을 사용하여 가상 머신, 컨테이너 및 네트워크를 프로비전하고 클라우드 인프라를 완료할 수 있습니다. 또한 Ansible을 사용하면 사용자 환경에서 리소스의 배포 및 구성을 자동화할 수 있습니다.

- hosts: localhost
  connection: local
  vars:
    resource_group: myResourceGroup
    webapp_name: myfirstWebApp
    plan_name: myAppServicePlan
    location: eastus
  tasks:
    - name: Create a resource group
      azure_rm_resourcegroup:
        name: "{{ resource_group }}"
        location: "{{ location }}"

    - name: Create App Service on Linux with Java Runtime
      azure_rm_webapp:
        resource_group: "{{ resource_group }}"
        name: "{{ webapp_name }}"
        plan:
          resource_group: "{{ resource_group }}"
          name: "{{ plan_name }}"
          is_linux: true
          sku: S1
          number_of_workers: 1
        frameworks:
          - name: "java"
            version: "8"
            settings:
              java_container: tomcat
              java_container_version: 8.5

Azure SDK 및 REST API

Azure 리소스는 코드에서 프로그래밍 방식으로 만들 수도 있습니다. 이를 통해 사용자 요청에 대한 응답으로 Azure 리소스를 동적으로 프로비전하는 애플리케이션을 작성할 수 있습니다. Azure SDK는 .NET, Go, Java, JavaScript 및 Python에서 리소스 관리 패키지를 제공하여 코드에서 직접 Azure 리소스를 만들고 관리할 수 있도록 합니다. 또는 Azure REST API를 사용하면 RESTful 엔드포인트에 대한 HTTP 요청을 통해 Azure 리소스를 관리할 수 있습니다.