host | disk | mem | Ver |
---|---|---|---|
pve1 | 500G | 16G | 6.8.4-2-pve |
pve2 | 500G | 16G | 6.8.4-2-pve |
apt update -y
apt install -y libguestfs-tools
proxmox 웹 UI는 IP:8006 으로 접속해서 root 계정으로 로그인 가능합니다.
접속하면 task log 및 기타 속성에 등록된 값들을 바로 확인 가능합니다.
이제 스토리지 등록을 해보겠습니다.
스토리지 > NFS
ID: 분류할 이름, 서버: nfs 서버 IP, Export: 마운트할 nfs 서버 내 디렉터리 명, 내용: 클릭하여 전부 선택, 노드: ALL 또는 특정 노드 선택
스토리지 서버가 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
https://cloud-images.ubuntu.com
mkdir vm_img && cd vm_img wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
virt-customize -a noble-server-cloudimg-amd64.img --install qemu-guest-agent
3분 내로 완료되었습니다
# 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
CPU Core | Memory | Network Interface |
---|---|---|
2 Core | 2G | virtio, 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'
===
빠르게 생성하기 위해 이미지를 스토리지로 가져옵니다.
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
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
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 된 내역을 볼 수 있습니다.