본문으로 건너뛰기

[Proxmox] Import the qcow2 image

Import Rocky Linux and Amazon Linux 2023

요약

  • qcow2 Cloud Image를 qm importdisk로 VM 디스크에 가져오고 Cloudinit Drive를 추가하면 초기 설정이 자동 적용되는 Proxmox VM Template을 만들 수 있습니다.
  • Amazon Linux 2023 KVM 이미지도 같은 방식으로 가져올 수 있으며, Proxmox Cloudinit Device가 seed.iso 역할을 대신합니다.
  • AL2023 Cloud image는 기본적으로 SSH 비밀번호 접속이 막혀 있어 virt-customize로 ssh_pwauth를 true로 바꾼 뒤 import할 수 있습니다.

테스트 환경 Proxmox VE, Rocky Linux 8.10 GenericCloud 이미지(8.10-20240528.0), Amazon Linux 2023 KVM 이미지(2023.4.20240528.0)

이전 글

Qcow2 이미지 추가

Proxmox 에 Cloud-init device 기능과 qcow2 유형의 Cloud Image 를 이용하면 Proxmox 에서도 간단하게 운영체제를 설정하고 생성, 운영 할 수 있습니다.

How to

먼저 Template 생성을 위해 VM 을 생성합니다.
아래 작성한 내용은 Rocky Linux 8.10 을 추가하기 위한 내용을 구성되어 있습니다.

    Template 생성을 위한 VM 생성을 시작합니다.

    Cloud Image 를 사용할 것이므로 Do not use any media 를 선택합니다.

    Cloud Image 를 Base Disk 로 사용해야되므로 기본 DISK 는 제거합니다.

# mkdir /var/lib/vz/template/qcow
# cd /var/lib/vz/template/qcow

# wget http://dl.rockylinux.org/pub/rocky/8/images/x86_64/Rocky-8-GenericCloud-Base-8.10-20240528.0.x86_64.qcow2

# qm importdisk 101 Rocky-8-GenericCloud-Base-8.10-20240528.0.x86_64.qcow2 vmpool
importing disk 'Rocky-8-GenericCloud-Base-8.10-20240528.0.x86_64.qcow2' to VM 101 ...
  Logical volume "vm-101-disk-0" created.
transferred 0.0 B of 10.0 GiB (0.00%)
...
Successfully imported disk as 'unused0:vmpool:vm-101-disk-0'

위와 같이 PVE 노드에서 qcow2 이미지를 내려받고 qm importdisk 명령어를 통해 vmpool 을 사용하며 101 VM 에 DISK 로 추가합니다.

    위와 같이 Unused Disk 0 로 추가된 것을 볼 수 있습니다.

    추가된 Unused Disk 를 VirtIO Block 유형으로 변경합니다.

    virtio0 유형의 디스크로 변경된 것을 볼 수 있습니다.

    추가된 virtio0 유형의 디스크를 Boot Order 에 추가합니다.

    해당 디스크가 정상적인 부트 리스트에 가도록 설정합니다.

    Cloud-init 기능을 이용 할 수 있도록 Cloudinit Drive 를 추가합니다.

    Cloudinit Drive 가 사용할 PVE Storage 를 선택합니다.

    Cloud-init 정보를 설정합니다.
    Cloud-init 에 의하여 생성할 계정 및 비밀번호, 네트워크 설정을 하였습니다.

    Template 생성을 위해 Convert to template 를 선택합니다.

    Template 생성이 되었습니다.

    VM 생성을 위해 Template 를 Clone 합니다.

    Mode 는 Full Clone 으로 설정하고 Clone 합니다.

    Clone 된 VM 을 시작하면 Cloud-init 에 설정한 것과 같이 자동으로 초기 설정이 완료된 상태의 운영체제를 확인 할 수 있습니다.

Import Amazon Linux 2023

아래 문서와 같이 Amazon Linux 2023 은 Amazon EC2 가 아닌 다른 KVM 혹은 VMware 와 같은 환경에서 사용이 가능합니다.

위 문서에서는 seed.iso 를 생성해서 Cloud-init 정보 주입을 해야하지만 Proxmox 에서는 Cloudinit Device 기능을 이용하면 자동으로 이 부분을 설정 할 수 있습니다.

아래는 Amazon Linux 2023 을 추가하는 과정에 일부입니다.
VM 생성 과정은 이전에 설명한 Rocky Linux 부분을 참고합니다.

root@pve1:~# cd /var/lib/vz/template/qcow/

root@pve1:/var/lib/vz/template/qcow# wget https://cdn.amazonlinux.com/al2023/os-images/2023.4.20240528.0/kvm/al2023-kvm-2023.4.20240528.0-kernel-6.1-x86_64.xfs.gpt.qcow2

root@pve1:/var/lib/vz/template/qcow# qm importdisk 103 al2023-kvm-2023.4.20240528.0-kernel-6.1-x86_64.xfs.gpt.qcow2 vmpool

Amazon Linux 2023 부팅 이후, 아래와 같이 Cloudinit Device 에서 seed.iso 역할을 대신하고 있는 것을 확인 할 수 있습니다.

[root@test222 ~]# cat /etc/os-release
NAME="Amazon Linux"
VERSION="2023"
...

[root@test222 ~]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.

[root@test222 ~]# ls -l /mnt
total 2
-rw-r--r--. 1 root root  54 Jun  8 12:52 meta-data
-rw-r--r--. 1 root root 216 Jun  8 12:52 network-config
-rw-r--r--. 1 root root 217 Jun  8 12:52 user-data
-rw-r--r--. 1 root root   0 Jun  8 12:52 vendor-data

[root@test222 ~]# cat /mnt/user-data
#cloud-config
hostname: test222
manage_etc_hosts: true
fqdn: test222
user: ec2-user
password: $5$M2ADMz3P$sMZAACAjq6WcEamzC1mnm5fGpKT/dDgYlQfnOlKIh.8
chpasswd:
  expire: False
users:
  - default
package_upgrade: true

참고로 AWS 에서 제공하는 Amazon Linux 2023 Cloud image 의 경우, 기본적으로 ssh 를 Password 를 이용한 접근을 허용이 안 되어있습니다.
SSH 를 Password 를 이용하여 접근하기 위해서는 console 에서 /etc/ssh/sshd_config 를 수정이 필요합니다.

만약 초기 Cloud Image 를 수정하여 SSH 를 Password 를 이용한 접근을 활성화 하기 위해서는 아래와 같은 방법을 이용하면 쉽게 해결 할 수 있습니다.

# apt install libguestfs-tools

# virt-customize -a al2023-kvm-2023.4.20240528.0-kernel-6.1-x86_64.xfs.gpt.qcow2 --run-command "sed -i 's/ssh_pwauth:   false/ssh_pwauth:   true/g' /etc/cloud/cloud.cfg"
[   0.0] Examining the guest ...
[   1.9] Setting a random seed
virt-customize: warning: random seed could not be set for this type of guest
[   1.9] Running: sed -i 's/ssh_pwauth:   false/ssh_pwauth:   true/g' /etc/cloud/cloud.cfg
[   1.9] Finishing off

위와 같이 qcow2 이미지에 설정된 ssh_pwauth 설정을 virt-customize 명령어를 이용하여 수정하고 수정된 qcow2 이미지를 import 하는 방법입니다.

참고 자료

자주 묻는 질문

Proxmox에서 qcow2 이미지를 VM 디스크로 추가하려면 어떻게 하나요?

PVE 노드에서 qcow2 이미지를 내려받은 뒤 qm importdisk <VMID> <이미지 파일> <스토리지>를 실행합니다. 추가된 Unused Disk를 VirtIO Block 유형으로 변경하고 Boot Order에 추가합니다.

Proxmox에서 Cloud Image로 VM Template을 만드는 순서는 어떻게 되나요?

Do not use any media로 VM을 만들고 기본 디스크를 제거한 뒤, qm importdisk로 Cloud Image를 디스크로 추가하고 Boot Order를 설정합니다. 이어서 Cloudinit Drive를 추가해 계정, 비밀번호, 네트워크를 설정하고 Convert to template를 선택합니다. VM은 이 Template을 Full Clone으로 복제해 생성합니다.

Amazon Linux 2023을 Proxmox에서 쓸 때 seed.iso를 따로 만들어야 하나요?

필요 없습니다. Proxmox의 Cloudinit Device가 seed.iso 역할을 대신해 meta-data, user-data, network-config를 자동으로 제공합니다.

Amazon Linux 2023 Cloud Image에서 SSH 비밀번호 접속을 허용하려면 어떻게 하나요?

libguestfs-tools를 설치하고 virt-customize -a <qcow2 이미지> --run-command로 /etc/cloud/cloud.cfg의 ssh_pwauth를 true로 바꾼 뒤 이미지를 import합니다. 이미 부팅한 VM이라면 console에서 /etc/ssh/sshd_config를 수정해야 합니다.