CentOS 6.5 Linux系統定製與封裝快速實施指令碼

來源:互聯網
上載者:User

在大型企業或者是IDC做營運的朋友經常會有這樣子的需求,有些人可能還不是很瞭解Linux的二次封裝有什麼好處,這裡簡單說一下,就是當你要反覆做一個操作的時候,比如說要部署300台WEB伺服器,這時候你如果一台一台裝,然後裝完系統後再去配置這個WEB應用,那要花多少時間啊,是吧!但是如果你裝好一台伺服器,然後將這個系統進行二次封裝,這樣子你下次再要部署相同的WEB伺服器的時候就只需要拿這個封裝的系統去部署就OK,這是不是簡單多了,這時候有人可能會懷疑會不會存在驅動問題,當然系統本身OK的,他是沒有問題的,除非你是特殊的硬體。其實簡單的理解就是一個windows的ghost封裝差不多。如果你還是不是很明白,可能你需要多讀幾次這段文字。前期有測試過網上的一些教程,發現在CentOS6.0以上都不太好用了,由於時間的原因,我這裡只是貼出封裝的shell,其實整個還需要有一個比較複雜的過程,你可能需要用心去瞭解一下下面這個shell的意思,有需要的朋友可以聯絡我。當然我經常會用它來封裝像 openvpn、vsftpd、web等伺服器,讓它能夠實現全自動化快速部署,以提高我的工作效率,後期有機會將上次發布的vsftpd伺服器的封裝包發現來大家分享一下,大俠不要拍磚!頭已經在流血。

#!/bin/bash
#web:www.bkjia.com
SYSTEM_DIR=/home/bkjia
SYSTEM_NAME=bkjia
mount_ISO (){
    mkdir -p /home/bkjia/Packages
    mkdir -p /home/source
    mkdir -p /mnt/cdrom1
    mkdir -p /mnt/cdrom2
echo "請確保光碟機裡面有ISO檔案,且可以被掛載"
echo "請輸入Y/y繼續,任意鍵則退出運行"
read ret
[ ${ret} != "Y" -a ${ret} != "y" ] && exit 1
echo  "echo 預設情況,掛載的是/dev/cdrom到/mnt/cdrom1"
    mount /dev/cdrom  /mnt/cdrom1
    mount /dev/cdrom1 /mnt/cdrom2
    ls /mnt/cdrom2 |grep Packages
if [ "$?" != 0 ]
then
    echo "光碟片掛載不成功,請手動重新掛載,或者嘗試本地ISO掛載"
    echo "請輸入本地ISO的路徑:"
    read ret
    ls ${ret}
    [ "$?" != 0 ] && echo "本地ISO不存在或者路徑錯誤,退出運行" && exit 1
    [ "$?" == 0 ] && mount -o loop ${ret}  /mnt/cdcom1
fi
}
copy_ISO_file (){
#awk  '/安裝/{print $2}' install.log | sed -e '/^$/d' -e 's/^ //g' | grep -v FINISHED | grep -v ":" > /home/source/packges.list
mkdir -p /home/source
cp -p /root/packges.list /home/source/packges.list
mkdir -p /home/bkjia/Packages/conf/
cp -p /root/PS/* /home/bkjia/Packages/conf/
for packges in $(cat /home/source/packges.list)
do
    cp /mnt/cdrom1/Packages/$packges*  /home/bkjia/Packages
    [ $? != 0 ] && echo "copy  $packges is faied!"&& cp /mnt/cdrom2/Packages/$packges*    /home/bkjia/Packages
done
    rsync -a --exclude=Packages --exclude=repodata /mnt/cdrom2/ /home/bkjia/
cp -p /root/initrd.img /home/bkjia/isolinux/initrd.img
mv /home/bkjia/CentOS_BuildTag /home/bkjia/bkjia_BuildTag
}
rebuild_repo_xml (){
    cd  ${SYSTEM_DIR}
    rm -fv ${SYSTEM_DIR}/repodata/*
    mkdir -p ${SYSTEM_DIR}/repodata/
    cp -fv /mnt/cdrom2/repodata/*-c6-x86_64-comps.xml ${SYSTEM_DIR}/repodata/comps.xml
    createrepo -u "media://$(head -1 .discinfo)" -g ${SYSTEM_DIR}/repodata/comps.xml ${SYSTEM_DIR}/
    find ${SYSTEM_DIR}/repodata/ -type f -name TRANS.TBL | xargs /bin/rm -fv 
}
isolinux_cfg (){
    cat > ${SYSTEM_DIR}/isolinux/isolinux.cfg <<EOF
default auto
timeout 600
#default vesamenu.c32
#prompt 1
display boot.msg
menu background splash.jpg
menu title Welcome to bkjia 6.4!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label auto
  menu label ^Auto Install system
  menu default
  kernel vmlinuz
  append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img
label linux
  menu label ^Install or upgrade an existing system
  kernel vmlinuz
  append initrd=initrd.img
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -
EOF
}
ks_file(){
cat > ${SYSTEM_DIR}/isolinux/ks.cfg <<EOF
# Kickstart file automatically generated by anaconda.
#bkjia
#date 2013-07-20
#version=V6.4
install             
text     
cdrom
lang zh_CN.UTF-8
keyboard us
skipx
network --device eth0 --bootproto static --ip 192.168.50.1 --netmask 255.255.255.0 --gateway 192.168.50.254 --hostname bkjia-FTP
rootpw --iscrypted /gvPu5dZM6eis
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append=" rhgb crashkernel=auto quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --none
clearpart --all --initlabel
zerombr yes
part /boot --fstype=ext4 --size=100
part swap --size=4000
part / --fstype=ext4 --size=10000
part /opt --fstype=ext4 --grow --size=1000
reboot
#repo --name="bkjia"  --baseurl=cdrom:sr0 --cost=100
%packages  --nobase
@base
%packages
@chinese-support
@core
glibc-2.12-1.107.el6.i686
lrzsz
%post --nochroot
cp /mnt/source/Packages/conf/settings.sh /mnt/sysimage/tmp/settings.sh
mv /mnt/sysimage/etc/vsftpd/vsftpd.conf /mnt/sysimage/etc/vsftpd/vsftpd.conf.back
mv /mnt/sysimage/etc/pam.d/vsftpd /mnt/sysimage/etc/pam.d/vsftpd.back
cp /mnt/source/Packages/conf/vsftpd.conf /mnt/sysimage/etc/vsftpd/vsftpd.conf
cp /mnt/source/Packages/conf/ftpmgt.exe /mnt/sysimage/etc/vsftpd/ftpmgt.exe
cp /mnt/source/Packages/conf/vsftpd /mnt/sysimage/etc/pam.d/vsftpd
cp /mnt/source/Packages/conf/moban /mnt/sysimage/etc/vsftpd/moban
cp /mnt/source/Packages/conf/xianzhi /mnt/sysimage/etc/vsftpd/xianzhi
chmod 750 /mnt/sysimage/tmp/settings.sh
%post
/tmp/settings.sh
EOF
}
build_new_ISO (){
    cd ${SYSTEM_DIR}
    mkisofs -o ${SYSTEM_NAME}.iso -b isolinux/isolinux.bin -c isolinux/boot.cat    -no-emul-boot  -boot-load-size 4  -boot-info-table  -R  -J  -v  -V  bkjia  -T ${SYSTEM_DIR}
}
main (){
    mount_ISO
    copy_ISO_file
    isolinux_cfg
    ks_file
    rebuild_repo_xml
    build_new_ISO
}
main

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.