다음을 통해 공유


PowerShell을 사용하여 SQL Server VM을 만드는 가이드

적용 대상: Azure VM 기반 SQL Server

이 가이드에서는 PowerShell을 사용하여 Azure VM(Virtual Machine)에서 SQL Server를 만드는 옵션을 설명합니다. 기본값을 사용하는 간소화된 Azure PowerShell 예제는 Azure VM PowerShell의 SQL Server 빠른 시작 또는 엔드투엔드 스크립트를 참조하세요. PowerShell 스크립트를 사용하여 SQL Server VM 만들기를 참조하세요.

필수 조건

이 가이드를 완료하려면 다음이 있어야 합니다.

  • Azure 구독 Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
  • 최신 버전의 Azure PowerShell

참고 항목

이 문서에서는 Azure와 상호 작용하는 데 권장되는 PowerShell 모듈인 Azure Az PowerShell 모듈을 사용합니다. Az PowerShell 모듈을 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

변수 정의

값을 다시 사용하고 스크립트 작성을 간소화하려면 먼저 다양한 변수를 정의합니다. 원하는 대로 매개 변수 값을 변경하지만, 제공된 값을 수정할 때 이름 길이 및 특수 문자와 관련된 명명 제한 사항에 주의하세요.

먼저 스크립트 전체에서 사용할 매개 변수(예: 리소스 그룹의 위치, 이름, 사용하려는 SQL Server 이미지 및 스토리지 계정, 네트워크 및 가상 머신 속성)를 정의합니다.

위치 및 리소스 그룹

SQL Server VM 및 관련 리소스를 만들 데이터 영역, 리소스 그룹 및 구독을 정의합니다.

원하는 대로 수정한 후 다음 이러한 cmdlet을 실행하여 이러한 변수를 초기화합니다.

$SubscriptionId = "<Enter Subscription ID>"
$Location = "<Enter Location>"
$ResourceGroupName = "<Enter Resource Group Name>"
$userName = "<Enter User Name for the virtual machine"

스토리지 속성

가상 머신에서 사용할 스토리지 계정 및 스토리지 유형을 정의합니다.

원하는 대로 수정한 후 다음 cmdlet을 실행하여 이러한 변수를 초기화합니다. 프로덕션 워크로드에는 프리미엄 SSD를 사용하는 것이 좋습니다.

$StorageName = "sqlvm" + "storage"
$StorageSku = "Premium_LRS"

참고 항목

스토리지 계정 이름은 길이가 3자에서 24자 사이여야 하며 숫자와 소문자만 사용해야 하므로 리소스 그룹 이름에 특수 문자가 없는지 확인하거나 $ResourceGroupName 다른 이름을 사용하도록 스토리지 계정의 이름을 수정합니다.

네트워크 속성

가상 컴퓨터의 네트워크에서 사용할 속성을 정의합니다.

  • 네트워크 인터페이스
  • TCP/IP 할당 방법
  • 가상 네트워크 이름
  • 가상 서브넷 이름
  • 가상 네트워크의 IP 주소 범위
  • 서브넷의 IP 주소 범위
  • 공용 도메인 이름 레이블

원하는 대로 수정한 후 다음 cmdlet을 실행하여 이러한 변수를 초기화합니다.

$InterfaceName = $ResourceGroupName + "ServerInterface"
$NsgName = $ResourceGroupName + "nsg"
$TCPIPAllocationMethod = "Dynamic"
$VNetName = $ResourceGroupName + "VNet"
$SubnetName = "Default"
$VNetAddressPrefix = "10.0.0.0/16"
$VNetSubnetAddressPrefix = "10.0.0.0/24"
$DomainName = $ResourceGroupName

가상 머신 속성

다음 속성을 정의합니다.

  • 가상 머신 이름
  • 컴퓨터 이름
  • 가상 머신 크기
  • 가상 머신의 운영 체제 디스크 이름

원하는 대로 수정한 후 다음 cmdlet을 실행하여 이러한 변수를 초기화합니다.

$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"

SQL Server 이미지 선택

PowerShell을 사용하여 Azure Portal에서 사용할 수 없는 SQL Server의 이전 이미지를 배포할 수 있습니다.

다음 변수를 사용하여 가상 머신에 사용할 SQL Server 이미지를 정의합니다.

  1. Get-AzVMImageOffer 명령을 사용하여 모든 SQL Server 이미지 제품을 나열하여 Azure Portal에서 사용 가능한 현재 이미지와 PowerShell로만 배포할 수 있는 이전 이미지를 나열합니다.

    Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'
    

    참고 항목

    SQL Server 2008과 SQL Server 2008 R2는 추가 지원이 제공되지 않으며 더 이상 Azure Marketplace에서 사용할 수 없습니다.

  2. Get-AzVMImageSku사용하여 제품에 사용 가능한 버전을 나열합니다.

    Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
    

이 자습서에서는 Windows Server 2022에서 SQL Server 2022 Developer Edition(SQLDEV-GEN2)을 사용합니다. Developer 버전은 테스트 및 개발을 위해 무료로 사용이 허가되며 VM 실행 비용만 지불합니다.

$OfferName = "SQL2022-WS2022"
$PublisherName = "MicrosoftSQLServer"
$Version = "latest"
$Sku = "SQLDEV-GEN2"
$License = 'PAYG'

# Define a credential object
$SecurePassword = ConvertTo-SecureString '<strong password>' `
   -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)

리소스 그룹 만들기

PowerShell을 열고 Connect-AzAccount 명령을 실행하여 Azure 계정에 대한 액세스를 설정하고 Set-AzContext를 사용하여 구독 컨텍스트를 설정합니다. 메시지가 표시되면 자격 증명을 입력합니다. Azure 포털에 로그인할 때 사용한 것과 동일한 메일과 암호를 사용합니다.

구독 컨텍스트를 설정한 후 만드는 첫 번째 개체는 리소스 그룹입니다. Connect-AzAccount 명령을 사용하여 Azure에 연결하고 Set-AzContext사용하여 구독 컨텍스트를 설정합니다. New-AzResourceGroup cmdlet을 사용하여 Azure 리소스 그룹과 해당 리소스를 만듭니다. 리소스 그룹 이름 및 위치에 대해 이전에 초기화한 변수를 지정합니다.

이 cmdlet을 실행하여 Azure에 연결하고, 구독 컨텍스트를 설정하고, 새 리소스 그룹을 만듭니다.


# Set subscription context
Connect-AzAccount
$subscriptionContextParams = @{
    SubscriptionId = $SubscriptionId
}
Set-AzContext @subscriptionContextParams

# Create a resource group
$resourceGroupParams = @{
    Name = $resourceGroupName
    Location = $Location
    Tag = @{Owner="SQLDocs-Samples"}
}
$resourceGroup = New-AzResourceGroup @resourceGroupParams

저장소 계정 만들기

가상 머신에는 운영 체제 디스크와 SQL Server 데이터 및 로그 파일을 위한 스토리지 리소스가 필요합니다. 간단하게 하기 위해 둘 모두에 대해 하나의 디스크를 만듭니다. SQL Server 데이터와 로그 파일을 전용 디스크에 배치하기 위해 Add-Azure Disk cmdlet을 사용하여 나중에 추가 디스크를 연결할 수 있습니다. New-AzStorageAccount cmdlet을 사용하여 새 리소스 그룹에 표준 스토리지 계정을 만듭니다. 스토리지 계정 이름, 스토리지 SKU 이름 및 위치에 대해 이전에 초기화한 변수를 지정합니다.

이 cmdlet을 실행하여 새 스토리지 계정을 만듭니다.

# Create storage account
$StorageAccount = New-AzStorageAccount -ResourceGroupName $ResourceGroupName `
   -Name $StorageName -SkuName $StorageSku `
   -Kind "Storage" -Location $Location

스토리지 계정을 만드는 데 몇 분 정도 걸릴 수 있습니다.

네트워크 리소스 만들기

가상 머신에 네트워크 연결을 위해 여러 네트워크 리소스가 필요합니다.

  • 각 가상 머신에는 가상 네트워크가 필요합니다.
  • 가상 네트워크에는 하나 이상의 서브넷이 정의되어 있어야 합니다.
  • 네트워크 인터페이스는 공용 또는 개인 IP 주소로 정의되어야 합니다.

가상 네트워크 서브넷 구성 만들기

가상 네트워크에 대한 서브넷 구성을 생성하는 것으로 시작합니다. 이 자습서에서는 New-AzVirtualNetworkSubnetConfig cmdlet을 사용하여 기본 서브넷을 만듭니다. 서브넷 이름과 주소 접두사에 대해 이전에 초기화한 변수를 지정합니다.

참고 항목

이 cmdlet을 사용하여 가상 네트워크 서브넷 구성의 추가 속성을 정의할 수 있지만 이는 이 자습서에서 다루지 않습니다.

다음 cmdlet을 실행하여 가상 서브넷 구성을 만듭니다.

# Create a subnet configuration
$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix

가상 네트워크 만들기

다음으로, New-AzVirtualNetwork cmdlet을 사용하여 새 리소스 그룹에 가상 네트워크를 만듭니다. 이름, 주소 및 주소 접두사에 대해 이전에 초기화한 변수를 지정합니다. 이전 단계에서 정의한 서브넷 구성을 사용합니다.

이 cmdlet을 실행하여 가상 네트워크를 만듭니다.

# Create a virtual network
$VNet = New-AzVirtualNetwork -Name $VNetName `
   -ResourceGroupName $ResourceGroupName -Location $Location `
   -AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig

공용 IP 주소 만들기

이제 가상 네트워크가 정의되었으므로 가상 머신에 연결하도록 IP 주소를 구성해야 합니다. 이 자습서에서는 인터넷 연결을 지원하도록 동적 IP 주소 지정을 사용하여 공용 IP 주소를 만듭니다. New-AzPublicIpAddress cmdlet을 사용하여 새 리소스 그룹에 공용 IP 주소를 만듭니다. 이름, 위치, 할당 방법 및 DNS 도메인 이름 레이블에 대해 이전에 초기화한 변수를 지정합니다.

참고 항목

이 cmdlet을 사용하여 공용 IP 주소의 추가 속성을 정의할 수 있지만 이는 이 자습서에서 다루지 않습니다. 또한 고정 주소로 프라이빗 주소 또는 주소도 만들 수 있지만, 이 내용도 이 자습서에서 다루지 않습니다.

다음 cmdlet을 실행하여 공용 IP 주소를 만듭니다.

# Create a public IP address
$PublicIp = New-AzPublicIpAddress -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName

네트워크 보안 그룹 만들기

VM 및 SQL Server 트래픽을 보호하려면 네트워크 보안 그룹을 만듭니다.

  1. New-AzNetworkSecurityRuleConfig, RDP 연결을 허용하는 RDP(원격 데스크톱) 규칙 및 TCP 포트 1433의 트래픽을 허용하는 규칙을 사용하여 두 개의 네트워크 보안 그룹 규칙을 만듭니다. 이렇게 하면 인터넷을 통해 SQL Server에 연결할 수 있습니다.

    # Create a network security group rule
    $NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp `
    -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * `
    -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
    
    $NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule"  -Protocol Tcp `
    -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * `
    -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
    
  2. New-AzNetworkSecurityGroup을 사용하여 네트워크 보안 그룹을 만듭니다.

    # Create a network security group
    $Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName `
    -Location $Location -Name $NsgName `
    -SecurityRules $NsgRuleRDP,$NsgRuleSQL
    

네트워크 인터페이스 만들기

이제 가상 머신에 대한 네트워크 인터페이스를 만들 준비가 되었습니다. New-AzNetworkInterface cmdlet을 사용하여 새 리소스 그룹에 네트워크 인터페이스를 만듭니다. 이전에 정의한 이름, 위치, 서브넷 및 공용 IP 주소를 지정합니다.

다음 cmdlet을 실행하여 네트워크 인터페이스를 만듭니다.

# Create a network interface
$Interface = New-AzNetworkInterface -Name $InterfaceName `
   -ResourceGroupName $ResourceGroupName -Location $Location `
   -SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id `
   -NetworkSecurityGroupId $Nsg.Id

VM 개체 구성

이제 스토리지 및 네트워크 리소스가 정의되었으므로 가상 머신에 대한 컴퓨팅 리소스를 정의할 준비가 되었습니다.

  • 가상 머신 크기와 다양한 운영 체제 속성을 지정합니다.
  • 이전에 만든 네트워크 인터페이스를 지정합니다.
  • Blob 스토리지를 정의합니다.
  • 운영 체제 디스크를 지정합니다.

SQL Server VM 만들기

SQL Server VM을 만들려면 먼저 자격 증명 개체를 만든 다음 VM을 만듭니다.

로컬 관리자 자격 증명의 이름과 암호를 보관할 자격 증명 개체 만들기

가상 머신에 대한 운영 체제 속성을 설정하려면 먼저 보안 문자열로 로컬 관리자 계정의 자격 증명을 제공해야 합니다. 이렇게 하려면 Get-Credential cmdlet을 사용합니다.

다음 cmdlet을 실행합니다. PowerShell 자격 증명 요청 창에 VM의 로컬 관리자 이름 및 암호를 입력해야 합니다.

# Define a credential object
$SecurePassword = ConvertTo-SecureString '<strong password>' `
   -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)

속성 정의 및 VM 만들기

이제 New-AzVMConfig를 사용하여 가상 머신의 운영 체제 속성을 설정하고, New-AzVM으로 VM을 만들고, Add-AzVMNetworkInterface cmdlet을 사용하여 앞에서 정의한 변수를 사용하여 네트워크 인터페이스를 추가할 준비가 되었습니다.

샘플 스크립트는 다음을 수행합니다.

  • 가상 머신 에이전트를 설치해야 합니다.
  • cmdlet에서 자동 업데이트를 사용하도록 지정합니다.
  • 가상 머신 이름, 컴퓨터 이름 및 자격 증명에 대해 이전에 초기화한 변수를 지정합니다.

이 cmdlet을 실행하여 가상 머신의 운영 체제 속성을 설정합니다.

# Create a virtual machine configuration
$VMName = $ResourceGroupName + "VM"
$VMConfig = New-AzVMConfig -VMName $VMName -VMSize $VMSize |
    Set-AzVMOperatingSystem -Windows -ComputerName $VMName -Credential $Cred -ProvisionVMAgent -EnableAutoUpdate |
    Set-AzVMSourceImage -PublisherName $PublisherName -Offer $OfferName -Skus $Sku  -Version $Version |
    Add-AzVMNetworkInterface -Id $Interface.Id

# Create the VM
New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VMConfig

가상 머신이 만들어집니다.

참고 항목

부팅 진단에 대한 오류가 발생하면 무시할 수 있습니다. 가상 머신의 디스크에 대해 지정된 스토리지 계정이 Premium Storage 계정이기 때문에 부팅 진단을 위해 표준 스토리지 계정이 만들어집니다.

SQL IaaS 에이전트 확장 설치하기

SQL Server 가상 머신은 SQL Server IaaS 에이전트 확장을 사용하여 자동화된 관리 기능을 지원합니다. 확장을 통해 SQL Server를 등록하려면 가상 머신을 만든 후 New-AzSqlVM 명령을 실행합니다. SQL Server VM에 대한 라이선스 유형을 지정하고 종량제(), Azure 하이브리드 혜택 통해PAYG 사용자 라이선스 필요(), 재해 복구(AHUBDR)를 선택하여 무료 DR 복제본 라이선스를 활성화 합니다. 라이선스에 대한 자세한 내용은 라이선싱 모델을 참조하세요.

SQL Server VM을 SQL IaaS 에이전트 확장에 등록하려면 먼저 Register-AzResourceProvider를 사용하여 리소스 공급자에 구독을 등록한 다음 New-AzSqlVM을 사용하여 SQL Server VM을 SQL IaaS 에이전트 확장에 등록합니다.


# Register the SQL IaaS Agent extension to your subscription
Register-AzResourceProvider -ProviderNamespace Microsoft.SqlVirtualMachine

# Register SQL Server VM with the extension
New-AzSqlVM -Name $VMName -ResourceGroupName $ResourceGroupName -Location $Location `
-LicenseType $License

확장에 등록하는 세 가지 방법이 있습니다.

VM 중지 또는 제거

계속해서 VM을 실행하지 않아도 되는 경우 사용 중이 아닌 VM을 중지하여 불필요한 요금을 방지할 수 있습니다. 다음 명령은 VM을 중지하지만 나중에 사용할 수 있도록 유지합니다.

Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName

Remove-AzResourceGroup 명령을 사용하여 가상 머신과 연결된 모든 리소스를 영구적으로 삭제할 수도 있습니다. 그러면 가상 머신도 영구적으로 삭제되므로 이 명령을 사용할 때는 주의해야 합니다.

전체 스크립트

엔드투엔드 환경을 제공하는 전체 PowerShell 스크립트는 PowerShell을 사용하여 Azure VM에 SQL Server 배포를 참조하세요.

가상 머신이 만들어지면 다음을 수행할 수 있습니다.