6.1. VM 템플릿 생성
리눅스 배포판의 공식 클라우드 이미지로 VM 템플릿을 생성합니다.
VM 생성
다음 정보로 VM을 생성합니다.
- General
- VM ID: 100
- Name: ubuntu24-tpl
- OS
- Do not use any media
- Guest OS: Linux / 6.x Kernel
- Disk
- Format: QEMU image format (qcow2)
- Discard: check
- Disk size (GiB): 10
- CPU
- Cores: 4
- Total Cores: 4
- Type: x86-64-v2-AES 혹은 host
- Memory
- Memory (MiB): 4096
- Ballooning Device: un-check
- Network
- Bridge: vmbr0
- Model: VirtIO
Cloud-Init 드라이브 추가
Cloud-init은 클라우드 인스턴스 초기화 도구로, 운영 체제 부팅 시점에 사용자 데이터와 설정을 자동으로 적용하여 인스턴스를 초기화하는 역할을 합니다. 이 기능을 활성화 하기 위해 하드웨어에서 CloudInit 드라이브를 추가합니다.
Serial Port 추가 (선택 사항)
하드웨어에서 Serial Port 를 추가하면, VM에서 텍스트 타입의 콘솔(xterm.js)도 이용할 수 있습니다.
- noVNC: VM의 RGB 비디오 렌더링, 복사/붙여넣기 안됨
- xterm.js: 텍스트 기반 콘솔, 웹브라우저에서 문자열 선택, 복사/붙여넣기 가능
공식 클라우드 이미지로 교체
리눅스 배포판 사이트에서 공식 클라우드 이미지를 다운로드하여 VM의 이미지를 교체합니다.
- https://cloud-images.ubuntu.com
- http://dl.rockylinux.org/pub/rocky/9/images/x86_64/
- https://cdimage.debian.org/images/cloud/bookworm/
# cd /var/lib/vz/images/100 # ls -alh -rw-r----- 1 root root 193K vm-100-disk-0.qcow2 # IMG=vm-100-disk-0.qcow2 # qemu-img info $IMG image: vm-100-disk-0.qcow2 file format: qcow2 virtual size: 10 GiB (10737418240 bytes) disk size: 196 KiB # wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img # IMG=noble-server-cloudimg-amd64.img # qemu-img info $IMG image: noble-server-cloudimg-amd64.img file format: qcow2 virtual size: 3.5 GiB (3758096384 bytes) # qemu-img resize $IMG 10G Image resized. # virt-customize -a $IMG --run-command "growpart /dev/sda 1; resize2fs /dev/sda1;" # mv noble-server-cloudimg-amd64.img vm-100-disk-0.qcow2
이미지 조작
libguestfs-tools 도구를 통해 VM 디스크 이미지를 조작합니다.
- virt-customize : 설치, 명령 실행
- virt-copy-in : 파일 복사
- virt-edit : 텍스트 파일 수정
cd /var/lib/vz/images/100 IMG=vm-100-disk-0.qcow2 virt-customize -a $IMG --install qemu-guest-agent,net-tools,curl,tree,vim,wget,zsh,... virt-copy-in -a $IMG <some_file_in_host> <directory_path_in_image>
필요한 경우, VM을 구동하여 패키지를 설치합니다. 그 후 Sysprep 을 통해 시스템의 고유 정보를 삭제합니다.
IMG=vm-100-disk-0.qcow2 virt-sysprep -a $IMG
템플릿으로 변환
VM을 템플릿으로 변환합니다.
# ls /var/lib/vz/images/100 base-100-disk-0.qcow2