ปกติแล้ว Proxmox VE เอง จะมี Template สำเร็จไว้ให้เราดาวน์โหลดใช้งานกัน แต่ถ้าเรามีโปรแกรมเฉพาะ แล้วต้องการสร้าง Template ไว้ใช้เอง จะทำยังไง อยากรู้วิธีก็มาลองกันเลย ในขั้นตอนการสร้าง OpenVZ Template มีขั้นตอนหลักๆอยู่ 3 ขั้นตอนด้วยกัน

  • Installation ติดตั้ง OS ที่จะนำมาใช้เป็น Template บน physical server หรือ virtual server
  • Transferring โอนย้าย OS ที่ติดตั้งไปยัง OpenVZ virtual server (container) ในที่นี้ย้ายไปบน Proxmox
  • Modify ปรับแต่ง OS ที่ transfer มาให้ตามความต้องการและสร้างเป็น Template

เริ่มในส่วน Installation ก่อน

เครื่อง guest

สำหรับตัวอย่างจะใช้ CentOS เวอร์ชัน 6-x86_64 เป็นระบบปฎิบัติการในการสร้าง Template
ในขั้นตอนแรกให้ทำการติดตั้ง CentOS ลงบนเครื่อง Proxmox VE แบบ Container หรือ VM ตามปกติ
หลังจากติดตั้ง CentOS ลงเครื่อง Proxmox VE เรียบร้อย ให้ทำการติดตั้ง openssh, oepnssh-server,rsync และทำการ update และ upgrade CentOS ด้วยคำสั่ง

$ yum update

$ yum upgrade

$ yum install openssh openssh-server rsync

ติดตั้ง package อื่นลงไปตามความต้องการเพื่อนำไปใช้งาน หรือ ลบ package ที่ไม่จำเป็นออกเช่น

$ yum install vim

$ yum remove matahari matahari-lib qpid-cpp-server

$ clean rpm db

$ yum clean all

ต่อไปในส่วน Transfer to OpenVZ

ที่เครื่อง Host

ขั้นตอนต่อมาคือการโอนย้ายระบบปฏิบัติการที่ทำการติดตั้งแล้วมายัง OpenVZ container ทำการ sshเข้าเครื่อง Proxmox VE เมื่อเข้ามาแล้วให้สร้าง symbolic link ไปยัง Path : /var/lib/vz เพื่อง่ายต่อการปรับแต่งด้วยคำสั่ง

$ ln -s /var/lib/vz /vz

จากนั้นกำหนด container id(CTID) ที่ยังไม่ได้ใช้งานให้ OpenVZ template ในตัวอย่างจะกำหนดให้ CTID ของเครื่อง OpenVZ template เป็น 100 โดยใช้คำสั่ง

$ CTID=100

เพื่อให้แน่ใจว่ากำหนด CTID ถูกต้องให้ลองใช้คำสั่ง

$ echo $CTID

ที่หน้าจอต้องแสดง CTID = 100 ตามที่เรากำหนด

1

เพื่อไม่ให้ CTID ชนกับตัวอื่น เราสามารถตรวจสอบ CTID ที่ใช้งานอยู่ได้ด้วยคำสั่ง ดังนี้

vzlist -a

ลำดับต่อมาสร้าง directory เพื่อเก็บไฟล์ของเครื่อง OpenVZ template

$ mkdir /vz/private/$CTID

หลังจากสร้าง directory เรียบร้อยแล้วลำดับต่อมาทำโอนย้ายข้อมูลจาก CentOS ที่เราติดตั้งบน physical server หรือ virtual server มายังเครื่อง proxmox ด้วยคำสั่ง

$ sudo rsync -arvpz --exclude=/dev --exclude=/mnt --exclude=/proc --exclude=/sys
--exclude=/tmp -e ssh root@xx.xx.xx.xx:/ /vz/private/$CTID/

สำหรับ ip xx.xx.xx.xx คือ ip ของเครื่อง CentOS ต้นแบบที่เราจะนำมาปรับแต่งโดยการโอนย้าย
จากนั้น Modify the transferred fles

ที่เครื่อง Host

Container จะไม่ได้รับ ttys ที่แท้จริง , ให้ทำการ disable getty ก่อน

$ sed -i -e 's/^[0-9].*getty.*tty/#&/g' /vz/private/$CTID/etc/inittab

ปรับแต่ง fstab และ Disk partition ที่ไม่ต้องการในเครื่อง container ให้ลบ content ใน /vz/private/$CTID/etc/fstab ทั้งหมดและแทนที่ด้วย

$ echo "none /dev/pts devpts rw 0 0" > /vz/private/$CTID/etc/fstab

$ echo "proc /proc proc defaults 0 0" >> /vz/private/$CTID/etc/fstab

สร้าง directory เพิ่มเติม /dev, /mnt, /proc, /sys, /tmp

$ mkdir /vz/private/$CTID/dev

$ mkdir /vz/private/$CTID/mnt

$ mkdir /vz/private/$CTID/proc

$ mkdir /vz/private/$CTID/sys

$ mkdir /vz/private/$CTID/tmp

กำหนด permission เป็น 0755 สำหรับ directory ที่สร้างใหม่และ directory อื่นๆ

สร้าง directory devpts

$ mkdir /vz/private/$CTID/dev/pts

สร้าง /etc/udev/devices

$ mkdir /vz/private/$CTID/etc/udev/devices

กำหนด permission ให้ directory /tmp และ /var/tmp

$ chmod 1777 /vz/private/$CTID/tmp

$ chmod 1777 /vz/private/$CTID/var/tmp

Disable Network interface เมื่อเปิดเครื่อง ให้ ONBOOT= “NO” ใช้คำสั่ง

$ sed -i -e 's/ONBOOT="yes"/ONBOOT="no"/g' /vz/private/$CTID/etc/sysconfg/networkscripts/ifcfg-eth*

ลบ HWADDR จาก network interface

$ sed -i -e 's/^\(HWADDR=.*\)$//g' /vz/private/$CTID/etc/sysconfg/network-scripts/ifcfgeth*

เปลี่ยน PROMPT = yes เป็น PROMPT = no ใน sysconfg/init

$ sed -i -e 's/PROMPT=yes/PROMPT=no/g' /vz/private/$CTID/etc/sysconfg/init

นำคอมเม้นออกจากไฟล์ rc.conf

$ sed -i -e 's/^\(console.*\)$/#\1/g' /vz/private/$CTID/etc/init/rc.conf

ปรับปรุง Disk quota

$ rm -f /vz/private/$CTID/etc/mtab

$ ln -s /vz/private/$CTID/proc/mounts /etc/mtab

ลบ ssh host keys ของ CentOS เดิม

$ rm -f /vz/private/$CTID/etc/ssh/ssh_host_*

ลบ boot และ kernel

$ rm -rf /vz/private/$CTID/boot/*.*

$ for i in `rpm -q kernel`; do rpm -e --nodeps $i; done

ลบข้อมูลของในส่วนชื่อ hostname, และ DNS confg เดิมของเครื่องต้นแบบ

$ rm /vz/private/$CTID/etc/resolv.conf

$ touch vz/private/$CTID/etc/resolv.conf

$ rm /vz/private/$CTID/etc/hostname

เคลียร์ log fles

$ rm /vz/private/$CTID/var/log/messages

$ rm /vz/private/$CTID/var/log/boot.log

$ rm /vz/private/$CTID/var/log/yum.log

$ rm /vz/private/$CTID/var/log/anaconda.syslog

สร้าง Template

ที่เครื่อง Host
เข้าไปที่ Path ที่เก็บ container template

$ cd /vz/privte/$CTID

แพ็คไฟล์ template ดัวยคำสั่ง

$ tar -czvf /vz/template/cache/centos-6-x86_64_custom.tar.gz ./

จากนั้น template ก็พร้อมนำไปใช้งานได้แล้ว

5

Comments are closed.