Windows 환경에서 Multipass 가상 머신 구축 및 네트워크 구성 가이드

1. Multipass 설치 및 데이터 디렉터리 구성

Windows 환경에서 Multipass를 설치하기 전에 가상 머신 이미지가 저장될 데이터 디렉터리를 미리 지정하는 것이 좋습니다. 공식 GitHub 릴리스 페이지에서 최신 설치 파일을 다운로드합니다.

설치 파일을 실행하기 전, 관리자 권한으로 PowerShell을 실행하고 다음 명령어를 입력하여 환경 변수를 설정합니다.

Set-ItemProperty -Path "HKLM:System\CurrentControlSet\Control\Session Manager\Environment" -Name MULTIPASS_STORAGE -Value "D:\VM\MultipassStorage"

이제 다운로드한 설치 파일을 실행하고 설치 경로를 지정한 디렉터리로 설정합니다. 설치 완료 후 명령 프롬프트에서 버전을 확인합니다.

multipass --version

기존 설치본의 데이터 디렉터리 변경

이미 Multipass가 설치되어 있고 데이터 저장소 위치만 변경하려는 경우, 다음 단계를 따릅니다.

  1. 관리자 권한 PowerShell에서 서비스 중지: Stop-Service Multipass
  2. 기존 데이터(기본 경로: C:\ProgramData\Multipass)를 새 디렉터리(예: D:\VM\MultipassStorage)로 복사합니다.
  3. 환경 변수 업데이트: Set-ItemProperty -Path "HKLM:System\CurrentControlSet\Control\Session Manager\Environment" -Name MULTIPASS_STORAGE -Value "D:\VM\MultipassStorage"
  4. 서비스 재시작: Start-Service Multipass

2. Ubuntu 인스턴스 생성 및 실행

클라이언트 인증을 위해 로컬 암호를 설정하고, 사용 가능한 이미지 목록을 확인합니다.

multipass set local.passphrase=securePass123!
multipass find

이제 새로운 인스턴스를 생성합니다. 인스턴스 이름은 dev-node-01로 지정하고, 리소스를 할당합니다.

multipass launch -n dev-node-01 -c 4 -m 16G -d 50G
  • -n: 인스턴스 이름
  • -c: CPU 코어 수 (기본값: 1)
  • -m: 메모리 크기 (기본값: 1G)
  • -d: 디스크 용량 (기본값: 5G)

생성된 인스턴스 목록은 다음 명령어로 확인할 수 있습니다.

multipass list

시스템 트레이의 Multipass 아이콘을 우클릭하여 'Open Shell'을 선택하면 터미널이 열립니다. 인스턴스가 없다면 자동으로 'primary'라는 기본 인스턴스가 생성됩니다.

3. 호스트 디렉터리 마운트 및 파일 전송

호스트 OS와 가상 머신 간에 파일을 공유하기 위해 디렉터리를 마운트할 수 있습니다. 먼저 권한 있는 마운트 기능을 활성화합니다.

multipass set local.privileged-mounts=true
multipass mount D:\Workspace\Projects dev-node-01:/opt/workspace

마운트를 해제하려면 다음 명령어를 사용합니다.

multipass unmount dev-node-01:/opt/workspace

단일 파일을 가상 머신으로 전송할 때는 transfer 명령어를 활용합니다.

multipass transfer D:\config\appsettings.json dev-node-01:/home/ubuntu/configs/

4. Cloud-Init을 활용한 초기화 자동화

인스턴스 생성 시 초기 설정을 자동화하기 위해 cloud-init YAML 파일을 사용할 수 있습니다. 파일은 반드시 #cloud-config로 시작해야 합니다.

multipass launch --name web-server-01 --cloud-init setup.yaml

setup.yaml 파일 예시 (Docker 및 Nginx 설치):

#cloud-config
package_update: true
packages:
  - docker.io
  - nginx
runcmd:
  - systemctl enable docker
  - systemctl start docker
  - systemctl restart nginx

5. 인스턴스 수명 주기 관리

인스턴스의 상태를 제어하는 주요 명령어들은 다음과 같습니다.

# 인스턴스 시작
multipass start web-server-01

# 인스턴스 중지
multipass stop web-server-01

# 인스턴스 삭제 (휴지통으로 이동)
multipass delete web-server-01

# 삭제된 인스턴스 복원
multipass recover web-server-01

# 삭제된 인스턴스 완전 제거
multipass purge

# 인스턴스 터미널 접속
multipass shell web-server-01

# 인스턴스 상세 정보 조회
multipass info web-server-01

6. 시스템 계정 및 SSH 루트 접근 설정

Multipass는 기본적으로 ubuntu 계정을 생성합니다. 보안을 위해 기본 계정과 루트 계정의 암호를 변경합니다.

sudo passwd ubuntu
sudo passwd root

루트 계정으로 SSH 접속을 허용하려면 SSH 데몬 설정을 수정해야 합니다.

sudo nano /etc/ssh/sshd_config

파일 내에서 PermitRootLoginPasswordAuthentication 항목을 찾아 다음과 같이 변경합니다.

PermitRootLogin yes
PasswordAuthentication yes

설정 적용을 위해 SSH 서비스를 재시작합니다.

sudo systemctl restart ssh

7. Hyper-V 기반 가상 네트워크 및 정적 IP 구성

가상 머신을 호스트와 동일한 로컬 네트워크(LAN)에 연결하려면 Hyper-V 가상 스위치를 구성해야 합니다.

가상 스위치 생성

  1. Windows 검색에서 'Hyper-V 관리자'를 실행합니다.
  2. 우측 메뉴에서 '가상 스위치 관리자'를 선택하고 '새 가상 네트워크 스위치' -> '외부'를 선택합니다.
  3. 호스트의 물리 네트워크 어댑터를 선택하고 이름을 LAN-vSwitch로 지정하여 생성합니다.

인스턴스에 네트워크 어댑터 추가

Hyper-V 관리자에서 해당 가상 머신의 설정으로 이동하여 '네트워크 어댑터' 하드웨어를 추가하고, 앞서 만든 LAN-vSwitch를 연결합니다.

Ubuntu Netplan 네트워크 설정

가상 머신 내부로 접속하여 Netplan 설정 파일을 수정합니다.

multipass shell dev-node-01
sudo nano /etc/netplan/50-cloud-init.yaml

다음과 같이 정적 IP를 할당하도록 구성 파일을 작성합니다. (예시 환경: 게이트웨이 192.168.1.1, 할당 IP 192.168.1.150)

network:
    ethernets:
        eth0:
            dhcp4: true
            match:
                macaddress: 00:15:5d:01:02:03
            set-name: eth0
        eth1:
            addresses: [192.168.1.150/24]
            routes:
                - to: default
                  via: 192.168.1.1
            nameservers:
                addresses: [192.168.1.1, 8.8.8.8]
    version: 2

네트워크 설정을 적용합니다.

sudo netplan apply

이제 호스트 머신과 가상 머신 간에 ICMP(Ping) 테스트를 수행하여 LAN 환경에서의 연결성을 검증할 수 있습니다.

8. Multipass 전역 설정 및 인스턴스 스펙 변경

기본 인스턴스 이름을 변경하여 multipass shell 명령어 실행 시 자동으로 연결되도록 설정할 수 있습니다.

multipass set client.primary-name=dev-node-01

가상화 엔진을 Hyper-V에서 VirtualBox로 전환하거나 그 반대로 변경할 수도 있습니다.

multipass set local.driver=hyperv

실행 중인 인스턴스의 하드웨어 리소스를 동적으로 조정하려면 인스턴스를 중지한 후 set 명령어를 사용합니다.

multipass stop dev-node-01
multipass set local.dev-node-01.cpus=8
multipass set local.dev-node-01.memory=32G
multipass set local.dev-node-01.disk=100G
multipass start dev-node-01

태그: Multipass ubuntu Hyper-V cloud-init Netplan

6월 15일 02:57에 게시됨