스크립트를 사용하여 Azure PowerShell로 Azure 리소스 만들기

완료됨

복잡하거나 반복적인 작업을 수동으로 수행하면 시간이 많이 걸리고 오류가 발생하기 쉽습니다. 조직에서는 비용을 절감하고 실수를 방지하기 위해 이러한 작업을 자동화하는 것을 선호합니다.

지속적으로 삭제하고 다시 만들어야 하는 여러 Linux VM(Virtual Machines)에서 소프트웨어를 테스트하는 CRM(고객 관계 관리) 예에서는 자동화가 필수적입니다. PowerShell 스크립트를 사용하여 VM 만들기를 자동화하는 것은 매번 수동으로 만드는 것보다 훨씬 더 효율적이고 안정적입니다.

VM을 만드는 핵심 작업 외에도 스크립트는 몇 가지 다른 요구 사항을 충족해야 합니다.

  • 여러 VM 만들기: 고유한 이름의 VM을 여러 개 만들려면 New-AzVM을 사용합니다.
  • 리소스 그룹 매개 변수: 스크립트가 리소스 그룹의 이름을 매개 변수로 수락하도록 허용합니다.

이 단원에서는 이러한 요구 사항을 충족하는 PowerShell 스크립트를 작성하고 실행하는 방법을 알아봅니다.

PowerShell 스크립트란?

PowerShell 스크립트는 명령 및 제어 구문을 포함하는 텍스트 파일입니다. 명령은 cmdlet의 호출이고 제어 구문은 PowerShell에서 제공하는 루프, 변수, 매개 변수, 주석 등과 같은 프로그래밍 기능입니다.

PowerShell 스크립트 파일에는 .ps1 파일 확장명이 있습니다. 텍스트 편집기를 사용하여 이러한 파일을 만들고 저장할 수 있습니다.

PowerShell 스크립트를 작성하는 경우 Windows, Linux 및 macOS에서 무료로 지원되는 VS Code(Visual Studio Code)를 사용하는 것이 좋습니다. VS Code용 PowerShell 확장은 구문 강조 표시 및 사용 가능한 cmdlet 목록과 같은 기능을 제공합니다.

다음 스크린샷은 Azure에 연결하고 가상 머신을 만드는 샘플 스크립트가 포함된 VS Code의 예입니다.

Azure에서 가상 머신을 만들기 위한 PowerShell 스크립트가 포함된 VS Code의 스크린샷.

스크립트를 만든 후에는 파일 이름 앞에 현재 디렉터리에 대한 점과 백슬래시를 전달하여 PowerShell 명령줄에서 스크립트를 실행할 수 있습니다.

.\myScript.ps1

PowerShell 기술

PowerShell에는 프로그래밍 언어에서 일반적으로 발견되는 기능이 포함되어 있습니다. 변수를 정의하고, 분기 및 루프를 사용하고, 명령줄 매개 변수를 캡처하고, 함수를 작성하고, 주석을 추가할 수 있습니다. 집중하고 있는 스크립트에는 변수, 루프, 매개 변수라는 세 가지 주요 기능이 필요합니다.

변수

PowerShell에서 변수는 달러 기호($)를 사용하여 선언되고 등호(=) 연산자를 사용하여 값이 할당됩니다. 예시:

$location = 'eastus'

변수에 저장된 값을 확인하려면 $ 접두사와 해당 이름을 사용합니다.

$location

변수는 개체 포함할 수 있습니다. 예를 들어, 다음 정의는 $adminCredential 변수를 Get-Credential cmdlet에서 반환된 개체로 설정합니다.

$adminCredential = Get-Credential

반복

PowerShell에는 For, Foreach, Do-Until, Do-WhileWhile을 비롯한 여러 루프 구조가 있습니다. Foreach 루프는 컬렉션의 값 집합에 대해 루프를 실행해야 하는 시나리오에 적합합니다.

$items = 'web','app','sql'
foreach ($item in $items) {
    $item
}

매개 변수

PowerShell 스크립트를 만들 때 스크립트에 매개 변수를 추가한 다음 스크립트를 실행할 때 이러한 매개 변수의 값을 지정할 수 있습니다. 예시:

.\setupEnvironment.ps1 -Name 'web','app','sql' -Location eastus

스크립트 내에서 값을 변수로 캡처합니다. 이 예에서 매개 변수는 NameLocation입니다.

param (
    [string[]]$Name,
    [string]$Location
)

이러한 매개 변수를 입력 및 루프로 사용하여 지정된 매개 변수를 기반으로 VM 집합을 만들 수 있습니다. 이 방식은 스크립트를 제네릭화하고 동일한 코드가 반복되는 것을 방지합니다.

결합 기술

PowerShell 언어 기능과 Azure PowerShell cmdlet의 조합은 Azure 작업을 자동화하는 데 필요한 모든 도구를 제공합니다. CRM 예에서는 매개 변수가 있는 스크립트와 루프를 사용하여 여러 Linux VM을 만들어 프로세스를 간소화할 수 있습니다. 이 스크립트를 사용하면 단일 단계로 복잡한 작업을 수행할 수 있습니다.

예제 스크립트

다음은 변수, 루프 및 매개 변수를 사용하여 여러 VM을 만드는 방법을 보여 주는 스크립트 예입니다.

param (
    [string[]]$Name = 'web','app','sql',
    [string]$ResourceGroupName,
    [string]$Location = 'eastus'
)

$adminCredential = Get-Credential

foreach ($vm in $Name) {
    $azVmParams = @{
        ResourceGroupName   = $ResourceGroupName
        Name                = $vm
        Credential          = $adminCredential
        Location            = $Location
        Image               = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts           = 22
        PublicIpAddressName = $vm
    }
    New-AzVM @azVmParams
}

스크립트 실행

스크립트를 CreateVMs.ps1로 저장하고 PowerShell 명령줄에서 실행하여 필수 매개 변수를 제공합니다.

.\CreateVMs.ps1 -ResourceGroupName <resource-group-name>

이 스크립트를 사용하면 다양한 리소스 그룹에 여러 VM을 효율적으로 만들어 반복 작업을 자동화하고 Azure 환경 전체에서 일관성을 보장할 수 있습니다.