본문 바로가기
Azure/Azure Infra & Networking

Azure Bicep - VS Code로 bicep 실행 환경 준비하기

by ww0610 2026. 3. 16.

개요

분명히 교수님이 클라우드 엔지니어하면 개발할 일이 없다고 하셨는데

현업에 들어와 눈을 떠보니 개발 비스무리한 것을 하고 있습니다

 

개발이라 하기에는 모호하지만

인프라 환경에서는 어마어마한 정확함을 제공해주는 IaC - Bicep 입니다.

Azure Bicep IaC 아이콘
.


진행 과정

VS Code 설치 및 Bicep Extension 설치

Visual Studio Code - The open source AI code editor

 

Visual Studio Code - The open source AI code editor

Visual Studio Code redefines AI-powered coding with GitHub Copilot for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

개발자들 중에 VS Code를 싫어하는 분들도 많지만

그래도 MS가 만든 Bicep이니 섭섭하더라도 다운로드를 해줍니다.

VS Code 공식 사이트에서 Windows 설치 파일을 다운로드하는 화면
.

VS Code가 실행되었다면 왼쪽 메뉴에서 Extension를 누른 뒤 Bicep을 install 해줍니다.

VS Code에서 Bicep Extension을 검색하고 설치하는 화면
.

Bicep이 인프라 구성을 정의하는 청사진이라면,
Azure CLI는 그 청사진을 실제 Azure 환경에 적용하는 엔진 역할을 합니다.

Windows에 Azure CLI 설치 | Microsoft Learn

 

Windows에 Azure CLI 설치

Windows Azure CLI 설치하려면 CMD(Windows 명령 프롬프트)를 통해 CLI에 액세스할 수 있는 PowerShell 또는 MSI 설치 관리자를 사용해야 합니다.

learn.microsoft.com

Azure CLI를 설치해 줍니다.

 

VS Code에서 Bicep 코드 작성 영역과 Azure CLI 터미널 영역 구조
.

위쪽 영역에서 Bicep 코드를 작성하고,
아래쪽 터미널 영역에서 Azure CLI 명령을 실행합니다.

  • 상단 영역 → Bicep 코드 작성
  • 하단 터미널 → Azure CLI 명령 실행

이렇게 해서 Bicep으로 인프라를 정의하고 Azure CLI로 실제 Azure에 배포하는 작업을 수행하게 됩니다.


CLI 확인

이제 VS Code에서 Bicep을 작성하고 Azure CLI를 통해 Azure 인프라를 배포할 수 있는 기본 환경이 준비되었습니다.

VS Code 터미널에서 az login 명령을 입력하여 실행합니다.

 

명령을 실행하면 브라우저 인증 창이 나타나는데요

이 창에서 Azure에 로그인할 Microsoft 계정을 선택하여 인증을 진행합니다.

.

만약 브라우저 인증 창이 나오지 않는다거나 저런 식으로 에러가 나온다면

.

다음 명령을 먼저 실행한 뒤 다시 로그인 명령을 실행합니다

Azure CLI의 연결 검증을 바로 패스한 뒤 로그인 절차를 다시 수행하는 방법입니다.

$env:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = "1" 
az login

.

해당하는 구독을 선택해 줍니다.

VS Code 터미널에서 AZURE_CLI_DISABLE_CONNECTION_VERIFICATION 환경 변수를 설정하는 화면
.


배포 테스트

Azure CLI 로그인까지 완료되었다면,
이제 간단한 Bicep 파일을 이용해 실제 Azure 리소스가 배포되는지 테스트해 봅니다.

 

이번 예제에서는 다음 리소스를 함께 생성합니다.

  • Virtual Network
  • Subnet
  • Public IP
  • Network Interface
  • Virtual Machine

VS Code에서 makevm.bicep 파일을 생성한 후 다음 코드를 작성합니다.

파일명은 자유롭게 하면 되지만, 확장자는 반드시 .bicep 이어야 합니다.

makevm.bicep

더보기
// 리소스 그룹의 위치를 기본값으로 함
param location string = resourceGroup().location

// 생성할 가상 머신 이름
param vmName string = 'terrybicepvm'

// 관리자 계정 아이디
param adminUsername string = 'azureuser'

// 관리자 비번
param adminPassword string = 'Admin1234!@#$'

// 가상 네트워크
resource vnet 'Microsoft.Network/virtualNetworks@2023-05-01' = {
  // 가상 네트워크 이름
  name: 'bicep-vnet'

  // 리소스 생성 위치
  location: location

  properties: {
    // 가상 네트워크 주소 대역입니다.
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }

    // 가상 네트워크에 Subnet을 정의
    subnets: [
      {
        // Subnet 이름
        name: 'default'

        properties: {
          // Subnet 주소 대역
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }
}

// Public IP 리소스를 생성
resource publicip 'Microsoft.Network/publicIPAddresses@2023-05-01' = {
  // Public IP 이름
  name: 'terry-publicip'

  // 리소스 생성 위치
  location: location

  // Public IP SKU
  // Basic SKU 제한 오류가 발생할 수 있어 Standard로 변경
  sku: {
    name: 'Standard'
  }

  properties: {
    // 공인 IP 할당 방식
    // Standard SKU는 Static 방식으로 사용
    publicIPAllocationMethod: 'Static'
  }
}

// NIC 생성
resource nic 'Microsoft.Network/networkInterfaces@2023-05-01' = {
  // NIC 이름
  name: 'terry-nic'

  // 리소스 생성 위치
  location: location

  properties: {
    // IP 설정
    ipConfigurations: [
      {
        // IP 구성
        name: 'ipconfig1'

        properties: {
          // NIC가 연결될 Subnet
          subnet: {
            id: vnet.properties.subnets[0].id
          }

          // 사설 IP 할당 방식
          privateIPAllocationMethod: 'Dynamic'

          // 이 NIC에 Public IP를 연결
          publicIPAddress: {
            id: publicip.id
          }
        }
      }
    ]
  }
}

// Virtual Machine 리소스 생성
resource vm 'Microsoft.Compute/virtualMachines@2023-07-01' = {
  // VM 이름
  name: vmName

  // 리소스 생성 위치
  location: location

  properties: {
    // VM 크기
    hardwareProfile: {
      vmSize: 'Standard_B1s'
    }

    // 로그인 계정 관련 설정
    osProfile: {
      // VM 내부 컴퓨터 이름
      computerName: vmName

      // 관리자 계정 ID
      adminUsername: adminUsername

      // 관리자 비밀번호
      adminPassword: adminPassword

      // Linux VM에서 비밀번호 로그인 허용
      linuxConfiguration: {
        disablePasswordAuthentication: false
      }
    }

    // OS 이미지와 디스크 관련 설정
    storageProfile: {
      // Ubuntu 22.04 LTS
      imageReference: {
        publisher: 'Canonical'
        offer: '0001-com-ubuntu-server-jammy'
        sku: '22_04-lts'
        version: 'latest'
      }

      // OS 디스크 생성 방식
      osDisk: {
        createOption: 'FromImage'
      }
    }

    // 네트워크 연결 - 생성한 NIC를 이 VM에 연결
    networkProfile: {
      networkInterfaces: [
        {
          id: nic.id
        }
      ]
    }
  }
}

Bicep 파일 작성이 완료되었다면
VS Code 터미널에서 다음 명령을 실행합니다. (리소스그룹은 미리 만들어두었습니다.)

더보기

az deployment group create --resource-group terryVM --template-file makevm.bicep

.

다음과 같이 VM이 잘 생성된 것을 확인할 수 있었습니다.

Azure Portal에서 Bicep으로 생성된 Ubuntu 가상 머신
.


참고자료

Bicep이란 무엇인가요? - Azure Resource Manager | Microsoft Learn

 

Bicep이란 무엇인가요? - Azure Resource Manager

Azure에 인프라를 배포하기 위한 Bicep 언어를 이해합니다. JSON을 사용해 템플릿을 개발하는 것보다 향상된 제작 환경을 얻으세요.

learn.microsoft.com

 

반응형