Proxmox VE Ubuntu 24.04 VM 올리기

mimic1995·2024년 7월 31일
0

서버 구조

hostdiskmemVer
pve1500G16G6.8.4-2-pve
pve2500G16G6.8.4-2-pve

패키지 업데이트 및 설치

apt update -y 
apt install -y libguestfs-tools


NFS 스토리지 연결

WEB UI로 스토리지 추가

스토리지 만들기

proxmox 웹 UI는 IP:8006 으로 접속해서 root 계정으로 로그인 가능합니다.

접속하면 task log 및 기타 속성에 등록된 값들을 바로 확인 가능합니다.

이제 스토리지 등록을 해보겠습니다.

스토리지 > NFS

ID: 분류할 이름, 서버: nfs 서버 IP, Export: 마운트할 nfs 서버 내 디렉터리 명, 내용: 클릭하여 전부 선택, 노드: ALL 또는 특정 노드 선택

※ 추가가 잘 안되는 경우 고급에 체크하여 Version을 '4'로 변경하는 등 버전 변경을 해보면서 시도해보면 됩니다.


CLI 명령어로 스토리지 추가

스토리지 서버가 2개이기 때문에 하나 더 추가해보겠습니다.

pvesm add nfs pve_storage02 --path /mnt/pve/pve_storage02 --server nfs_서버_ip --export /pve_storage --content images,rootdir,vztmpl,iso,backup,snippets --options vers=4

연결 확인은 WEB UI에서도 가능하고 아래 명령어로도 됩니다.

cat /etc/pve/storage.cfg

스토리지 제거 시

pvesm remove $ID
umount /mount_dir_name

VM용 클라우드 이미지 설정

VM 용 클라우드 이미지 다운로드

https://cloud-images.ubuntu.com

mkdir vm_img && cd vm_img
wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img

qemu-guest-agent 설정

virt-customize -a noble-server-cloudimg-amd64.img --install qemu-guest-agent

3분 내로 완료되었습니다


사용자 계정 설정

root 패스워드 설정

# txt 파일에 root 패스워드 기재
echo "root_password" > root_pw.txt 
# virt-customize 로 적용
virt-customize -a noble-server-cloudimg-amd64.img --root-password file:root_pw.txt


일반 사용자 추가 후 패스워드 설정

# 사용자 추가
virt-customize -a noble-server-cloudimg-amd64.img --run-command "useradd -m -s /bin/bash 계정명"
# 사용자 암호 설정
echo "user_password" > user_pw.txt
virt-customize -a noble-server-cloudimg-amd64.img --password 계정명:file:user_pw.txt

보안 상 암호 파일은 삭제해두는 편이 좋습니다.
rm -f /vm_img/*.txt

클라우드 이미지 패키지 업데이트

virt-customize -a noble-server-cloudimg-amd64.img --update



VM용 템플릿 설정

VM 사양

CPU CoreMemoryNetwork Interface
2 Core2Gvirtio, bridge vmbr0

템플릿 생성

qm create 777 --name "ubuntu-24.04-template" --cores 2 --memory 2048 --net0 virtio,bridge=vmbr0

템플릿 확인 후 삭제

# 목록 확인
qm list
===
      VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID       
       777 ubuntu-24.04-template stopped    2048               0.00 0    
===

# 상세정보 확인
qm config $VMID 

# 템플릿 삭제
qm destroy $VMID

이미지 스토리지로 옮기기

qm importdisk 777 noble-server-cloudimg-amd64.img 스토리지_ID
===
importing disk 'noble-server-cloudimg-amd64.img' to VM 777 ...
Formatting '/mnt/pve/pve_storage01/images/777/vm-777-disk-0.raw', fmt=raw size=3758096384 preallocation=off
transferred 0.0 B of 3.5 GiB (0.00%)
transferred 35.8 MiB of 3.5 GiB (1.00%)
...
transferred 3.5 GiB of 3.5 GiB (100.00%)
transferred 3.5 GiB of 3.5 GiB (100.00%)
Successfully imported disk as 'unused0:pve_storage01:777/vm-777-disk-0.raw'
===

빠르게 생성하기 위해 이미지를 스토리지로 가져옵니다.


스토리지 ID 확인 명령어

pvesm status
===
Name                 Type     Status           Total            Used       Available        %
local                 dir     active        98497780         4902612        88545620    4.98%
local-lvm         lvmthin     active       354275328               0       354275328    0.00%
pve_storage01         nfs     active       514937856         1984512       486722560    0.39%
pve_storage02         nfs     active       514937856               0       488707072    0.00%
===

Name 값을 넣으면 됩니다.


virtio 방식으로 변경합니다.

# 설정 변경
qm set 777 --virtio0 pve_storage01:777/vm-777-disk-1.raw
# 부팅 설정 변경
qm set 777 --boot c --bootdisk virtio0

클라우드 초기설정을 위해 cloudinit을 추가합니다.

qm set 777 --ide2 local-lvm:cloudinit
===
update VM 777: -ide2 local-lvm:cloudinit
  Logical volume "vm-777-cloudinit" created.
ide2: successfully created disk 'local-lvm:vm-777-cloudinit,media=cdrom'
generating cloud-init ISO
===

기본 설정을 추가하고 템플릿으로 변환합니다.

qm set 777 --serial0 socket --vga serial0
qm set 777 --agent enabled=1
qm template 777

VM 생성

qm clone 777 1000 --name "ubuntu-24.04-vm1" --full --storage pve_storage01
qm set 1000 --ipconfig0 ip=192.168.20.5/24,gw=192.168.20.1
qm resize 1000 virtio0 +25G

cloudinit 설정

mkdir /var/lib/vz/snippets
vi /var/lib/vz/snippets/cloud-init.yml
===
#cloud-config
hostname: ubuntu-vm1
users:
  - name: ubuntu
  - name: root
chpasswd:
  list: |
    ubuntu:testmimic1995
    root:mimic1995
  expire: False
packages:
  - cloud-guest-utils
ssh_pwauth: true
runcmd:
  - 'sed -i "s/^#PasswordAuthentication .*/PasswordAuthentication yes/" /etc/ssh/sshd_config'
  - 'systemctl restart ssh'
  - 'useradd -m -d /home/ubuntu -s /bin/bash -G sudo ubuntu'
  - 'echo "ubuntu:testmimic1995" | chpasswd'
  - 'echo "ubuntu  ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers'
  - growpart /dev/vda 1
  - resize2fs /dev/vda1
===
qm set 1000 --cicustom "user=local:snippets/cloud-init.yml"
qm start 1000

cli 명령어가 최신 로그 내역에 출력되며 vm 1000이 생성 및 start 된 내역을 볼 수 있습니다.

profile
Raiju Hantu Goryo Obake

0개의 댓글