13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[태그:] VM템플릿

  • Proxmox cloud-init 템플릿으로 VM 즉시 찍어내기 — 설치 0분 배포

    학습용 VM을 매번 ISO로 OS 설치하고, 계정 만들고, SSH 키 넣고, IP 잡고… 이걸 반복하다 지치신 적 있나요? 저는 Proxmox cloud-init 템플릿으로 이 과정을 없앴습니다. 클론 한 번이면 부팅과 동시에 설정까지 끝난 VM이 나옵니다. 실제로 제 홈랩 학습 VM들이 이 방식으로 찍혀 나옵니다.

    1. cloud-init이 뭔가

    cloud-init은 클라우드 이미지가 첫 부팅 때 자기 자신을 설정하게 해주는 표준 도구입니다. 호스트명·사용자·비밀번호·SSH 키·네트워크(IP)를 부팅 시 주입받아 자동 구성합니다. AWS·OpenStack이 인스턴스를 찍어내는 원리와 같은 것을, Proxmox에서도 그대로 씁니다.

    2. 왜 템플릿 + cloud-init인가

    • 속도: OS 설치 0분. 클론 → 부팅이면 끝.
    • 일관성: 항상 같은 베이스에서 시작(학습·실습에 최적).
    • 자동 설정: SSH 키·IP까지 부팅과 동시에.

    실제로 제 홈랩엔 Ubuntu, Rocky 등 cloud-init 템플릿이 준비돼 있어서, 실습이 필요하면 몇 초 만에 새 VM을 뽑습니다.

    3. 템플릿 만들기 (한 번만)

    배포판이 제공하는 cloud 이미지(.img/.qcow2)를 받아서 VM에 붙이고 템플릿으로 변환합니다.

    # 1) cloud 이미지 다운로드 (예: Ubuntu)
    wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
    
    # 2) 빈 VM 생성
    qm create 9000 --name ubuntu-2404-template --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0
    
    # 3) 이미지를 디스크로 임포트
    qm importdisk 9000 noble-server-cloudimg-amd64.img local-zfs
    qm set 9000 --scsihw virtio-scsi-single --scsi0 local-zfs:vm-9000-disk-0
    
    # 4) cloud-init 드라이브 + 부팅 설정
    qm set 9000 --ide2 local-zfs:cloudinit
    qm set 9000 --boot c --bootdisk scsi0 --serial0 socket --vga serial0
    
    # 5) 템플릿으로 변환
    qm template 9000

    4. 템플릿에서 VM 즉시 찍어내기

    이제 실습 VM이 필요할 때마다 클론 + cloud-init 값만 지정하면 됩니다.

    # 템플릿(9000)에서 새 VM(201) 풀 클론
    qm clone 9000 201 --name study-node1 --full
    
    # cloud-init: 사용자·SSH키·고정 IP 주입
    qm set 201 --ciuser myuser --sshkeys ~/.ssh/id_rsa.pub
    qm set 201 --ipconfig0 ip=192.168.x.201/24,gw=192.168.x.1
    
    qm start 201

    부팅되면 지정한 사용자·SSH 키·IP가 이미 적용돼 있어 바로 SSH 접속됩니다. OS 설치도, 초기 설정도 없습니다.

    5. 실전 팁

    • DHCP도 가능: 고정 IP 대신 --ipconfig0 ip=dhcp로 간단히.
    • 디스크 리사이즈: cloud 이미지는 작으니 qm resize 201 scsi0 +20G로 늘리면 cloud-init이 파일시스템까지 확장.
    • OpenStack 학습과 연결: 이 “이미지→인스턴스” 흐름이 바로 OpenStack의 Glance·Nova가 하는 일입니다. 원리가 같아요.
    • 골든 이미지: 자주 쓰는 패키지를 미리 넣어 템플릿을 만들면 클론 즉시 실전 투입 가능.

    6. 정리

    cloud-init 템플릿은 홈랩 생산성을 통째로 바꿉니다. 한 번 템플릿을 만들어 두면, 이후엔 클론 한 줄로 설정 완료된 VM이 나옵니다. 학습·실습으로 VM을 자주 만드는 분이라면 무조건 세팅해 두세요. 그리고 이 원리는 그대로 프라이빗 클라우드(OpenStack)의 인스턴스 배포로 이어집니다.