XenServer 7.0 PXE 자동 설치 환경 구축 하기
XenServer 7.0 PXE 자동 설치 환경 구축 하기
작성일 : 2016년 8월 1일
작성자 : 서진우 (alang@clunix.com)
// XenServer 7.0 PXE 환경 구축 주요 기술 요약
// 전반적인 구축 사항은 Xenserver 6.x 대 PXE 구축 문서 참고
# cd /tftpboot/linux-install/xenserver70/tmp/install
# vi opt/xensource/installer/constants.py
—————————————————————————-
.
# filesystems and partitions (sizes in MB):
root_size = 20480
backup_size = 20480
logs_size = 10240
swap_size = 2048
.
—————————————————————————-
# vi /tftpboot/linux-install/pxelinux.cfg/default
—————————————————————————-
.
label 11
menu label ^11) Install XenServer 7.0 (CLUNIX’s RNTier)
kernel xenserver70/mboot.c32
append xenserver70/xen.gz dom0_max_vcpus=4 dom0_vcpus_pin dom0_mem=4096M,max:4096M com1=115200,8n1 console=com1,vga — xenserver70/vmlinuz xencons=hvc console=hvc0 console=tty0 answerfile_device=eth0 answerfile=nfs://192.168.201.1:/home/clunix/OS/xenserver70/answerfile.xml install — xenserver70/install.img
.
—————————————————————————-
# vi /home/clunix/OS/xenserver70/answerfile.xml
—————————————————————————-
<?xml version=”1.0″?>
<installation mode=”fresh” srtype=”lvm”>
<primary-disk gueststorage=”yes”>sda</primary-disk>
<keymap>us</keymap>
<hostname>XS70-HV00</hostname>
<root-password>root///</root-password>
<source type=”nfs”>192.168.201.1:/home/clunix/OS/xenserver70/</source>
<script stage=”filesystem-populated” type=”nfs”>192.168.201.1:/home/clunix/OS/xenserver70/post-scripts.sh</script>
<admin-interface name=”eth0″ proto=”static”>
<ipaddr>192.168.201.134</ipaddr>
<subnet>255.255.255.0</subnet>
<gateway>192.168.201.254</gateway>
</admin-interface>
<name-server>192.168.123.86</name-server>
<timezone>Asia/Seoul</timezone>
<time-config-method>ntp</time-config-method>
<ntp-server>time.bora.net</ntp-server>
<ntp-server>time.nuri.net</ntp-server>
</installation>
—————————————————————————-
Xenserver7 에서는 <bootloader> 관련 설정이 제거 되었음.
# vi /home/clunix/OS/xenserver70/post-scripts.sh
—————————————————————————-
#!/bin/sh
touch $1/tmp/post-executed
cat /proc/cmdline > $1/tmp/cmdline
mount -t nfs 192.168.201.1:/home/clunix/OS/xenserver70 $1/mnt
cp -a $1/mnt/clunix_bg.png $1/usr/share/plymouth/themes/xenserver/background.png
cp -a $1/mnt/clunix.package/* $1/root/
cp -a $1/mnt/clunix.package/bin/*-patch $1/etc/init.d
umount -l $1/mnt
stringZ=`cat /proc/cmdline`
for service in $stringZ
do
if [ `expr match “$service” “xsip=”` -eq “5” ] ; then
IP1=${service:5}
fi
if [ `expr match “$service” “xsnm=”` -eq “5” ] ; then
NAME1=${service:5}
fi
if [ `expr match “$service” “xsgw=”` -eq “5” ] ; then
GW=${service:5}
fi
if [ `expr match “$service” “xsdns=”` -eq “6” ] ; then
DNS=${service:6}
fi
done
cat <<make_scripts > $1/tmp/post-executed.sh
#!/bin/sh
sleep 60
/root/bin/xen-network $NAME1 $IP1 255.255.255.0 $GW $DNS
sleep 1
/root/bin/xen-disk
sleep 5
sed -i ‘$d’ /etc/rc.d/rc.local
chmod 644 /etc/rc.d/rc.local
sleep 5
/etc/init.d/xs70e005-patch start
sleep 5
shutdown -r now
make_scripts
chmod 755 $1/tmp/post-executed.sh
echo “/tmp/post-executed.sh” >> $1/etc/rc.d/rc.local
chmod 755 $1/etc/rc.d/rc.local
—————————————————————————-
일단 xenserver7 의 기반 OS 환경은 RHEL7/Centos7 임.
RHEL7 에서 initscripts 방식이 6 와 달라짐
RHEL6 에서는 booting run level 에 따라 부팅 시 자동 실행되어야 할 스크립트를
/etc/rc.d/rc<run_level_number>.d 안에 넣으두면 되었는데..RHEL7 부터는
/etc/init.d 밑에 initrc scripts 형식을 맞추어 실행 scripts를 만들고
chkconfig –add 로 추가로 해주어야 한다.
또한 /etc/rc.d/rc.local 에 부팅 시 자동 실행이 필요한 명령 구문을 넣어줘도
되는데 RHEL7 에서는 기본적으로 rc.local 퍼미션이 644 로, 동작을 시킬려면
755 로 변경을 해주어야 한다.
answerfile 내용 중 postscript 부분에서 기본 OS 패키지 설치 후, 후처리 작업을
자동으로 수행할 수 있는데, 네트워크 정보 변경 및 SR 자동 추가, Xenserver 패치
작업을 자동으로 진행한다. answerfile 에 정의된 post-scripts.sh 에서 설치 완료 후
처음 리부팅 시 자동 실행되어지는 post-executed.sh 스크립트를 생성하고 rc.local
에 넣어준다.
post-executed.sh 에서는 또 다음 리부팅 시 xs70e005-patch 가 자동 실행되도록
스크립팅되어 있다.
# vi /home/clunix/OS/xenserver70/clunix.package/bin/xs70e005-patch
—————————————————————————-
#!/bin/sh
# chkconfig: 345 99 00
. /etc/init.d/functions
RETVAL=0
start () {
echo “XS70E005 Patching..”
HTID=`xe host-list | grep uuid | awk -F “: ” ‘{print $2}’`
cd /root
xe patch-upload file-name=./XS70E005.xsupdate
xe patch-apply host-uuid=$HTID uuid=6de9dcfd-6c34-415e-a765-4f79689a74ef
sleep 3
/sbin/chkconfig –del xs70e005-patch
/sbin/chkconfig –add xs70e008-patch
shutdown -r now
RETVAL=$?
}
case “$1″ in
start)
start
;;
*)
echo $”Usage: $0 {start}”
exit 1
esac
exit $RETVAL
—————————————————————————-
xs70e005-patch 로 해당 패치가 완료되면, 리부팅 후 xs70e008-patch 이 자동 실행되도록
구성되어 있다.