作者: 薄荷冰           Linux基础  |  网站架构  |  数据库  |  监控报警  |  shell系列  |  常用工具  |  常见问题


 

导航

 
#!/bin/bash
############################################################
# $Name:         install_cobbler.sh
# $Version:      v1.0
# $Functions:
# ***** Please decompression this scripts in /tmp/ *****
#    1 Online_cobbler_repo        # Provide Online repo of install cobbler
#    2 install_local_yum          # Provide local install cobbler service
#    3 install_cobbler            # Cobbler service provide Intranet server yum install rmps
#    4 Import_CentOS_images       # Import CentOS images USGE: Import_CentOS_images 7 or 6
#    5 creat_http_download        # Cobbler service provide Intranet server download
#    6 print_log                  # Print log in /tmp/install_cobbler.log  USGE: print_log "$RETVAL" "description"
#
# $Author:       Jeson Li
# $organization: www.lzbbg.cn
# $Create Date:  2017-03-10
# $Mail:         libobin@tom.com
# $Description:  Install cobbler service script
############################################################

#  do not run follow command: createrepo --update  /var/www/cobbler/ks_mirror/CentOS-7-x86_64/

if [ -f /tmp/install_cobbler.lock ];then
    echo -e "${Red}[`date +%F_%T`] $0 is running now and exit${Rst}"|tee /tmp/install_cobbler.log
    exit 1
 else
    touch /tmp/install_cobbler.lock
 fi
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    Tik="\e[5m";Red="\e[31m";Grn="\e[32m";Ylw="\e[33m";Blu="\e[34m";Pup="\e[35m";Rst="\e[0m"
    source /etc/rc.d/init.d/functions
    CentOS7_yum_path="/server/tools/CentOS7"
    loaders_path="/var/lib/cobbler"
### optimization_main ######################################################
    source /tmp/scripts/system_optimization.lib
     [ $(ulimit -n) -lt 65535 -a -s /etc/issue ] && optimization_main
############################################################################
    IP="`grep "$(hostname)" /etc/hosts|awk 'NR==1{print $1}'`"
    GW="${IP%.*}.2"
############################################################################
    mkdir -p ${CentOS7_yum_path} $loaders_path $cobbler_provide_yum_path
# Provide web download.lzbbg.cn download and yum install packets
    \mv /tmp/packets_tar ${CentOS7_yum_path}
    cd /tmp && tar czf installs.tar.gz scripts && mv installs.tar.gz scripts
    \cp -a /tmp/scripts ${CentOS7_yum_path}
    \mv /tmp/Templates ${CentOS7_yum_path}
    \mv /tmp/cobbler_install/install_yum_rpms ${CentOS7_yum_path}
    \mv /tmp/cobbler_install/install_cobbler_rpms ${CentOS7_yum_path}
    \mv /tmp/CentOS7_My_rpms ${CentOS7_yum_path}
# Print log  USGE: print_log "$RETVAL" "description"
print_log(){
    status_number=$1
    description="$2"
    if [ ${status_number} -eq 0 ];then
        action "[$(date +%F_%T)] ${description}" /bin/true|tee -a /tmp/install_cobbler.log
    else
        action "[$(date +%F_%T)] ${description}" /bin/false|tee -a /tmp/install_cobbler.log
        rm -f /tmp/install_cobbler.lock
        exit 1
    fi
 }

install_local_yum(){
    ls /server/tools/CentOS7/install_yum_rpms/*.rpm
    if [ $? -eq 0 ];then
        sum=0
        while (( ${sum} < 1 ))
        do
            for n in $(ls ${CentOS7_yum_path}/install_yum_rpms/*.rpm)
            do
                rpm -i $n
            done
            sum=$(rpm -qa createrepo |wc -l)
        done
        createrepo -pdo $CentOS7_yum_path $CentOS7_yum_path
        #error# cd $CentOS7_yum_path && createrepo --update $CentOS7_yum_path
        RETVAL=$?
        cat > /etc/yum.repos.d/cobbler-config.repo <<-EOF
            [lzbbg]
            name=lzbbg
            baseurl=file://$CentOS7_yum_path
            enabled=1
            gpgcheck=0
            priority=1
        EOF
    else
        echo -e "${Ylw}${CentOS7_yum_path}/install_yum_rpms not find createrepo rpms ...... ${Rst}"
        exit 3
    fi
 }

Online_cobbler_repo(){
    grep "release 6" /etc/redhat-release
    if [ $? -eq 0 ];then
        rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm
    else
        rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
    fi
 }

Import_CentOS_images(){
    while :
    do
        [ -d /var/www/cobbler/ks_mirror/CentOS-${1}* ] && break
        mount /dev/cdrom  /mnt &>/dev/null
        ls /mnt/*CentOS-$1
        if [ $? -eq 0 ];then
            cobbler import --path=/mnt/ --name=CentOS-$1-x86_64 --arch=x86_64
            umount -lf /mnt/ &>/dev/null
            \mv /tmp/cobbler_install/CentOS-${1}-x86_64.cfg /var/lib/cobbler/kickstarts/
            sed -ri".$(date +%F)" "/wget -O .*\.gz$/s#[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+#${IP}#g" /var/lib/cobbler/kickstarts/CentOS-${1}-x86_64.cfg
            cobbler profile edit --name=CentOS-${1}-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-${1}-x86_64.cfg
            [ ${1} -gt 6 ] && cobbler profile edit --name=CentOS-7-x86_64 --kopts='net.ifnames=0 biosdevname=0'
            break
        else
            echo -en "${Ylw}Please Load the CentOS-$1 image file ......${Rst}";read
        fi
        umount -lf /mnt/ &>/dev/null
    done
       RETVAL=$?
    print_log ${RETVAL} "Import_CentOS_images"
 }

install_cobbler(){
    if [ $RETVAL -eq 0 ] ;then
        yum install httpd cobbler cobbler-web pykickstart dhcp tftp xinetd -y
        \mv /etc/httpd/conf.d/{welcome.conf,welcome.conf.$(date +%F)}
        sed -i".$(date +%F)" 's#80$#81#g' /etc/httpd/conf/httpd.conf
        ss -lntup |grep ":81\b" &>/dev/null
        [ $? -eq 0 ] && { echo -e "${Ylw}port 81 already used ......${Rst}";exit 3 ; }
        systemctl enable rsyncd &>/dev/null
        # cobbler get-loaders # this is downloading https://cobbler.github.io/loaders
        \mv /tmp/cobbler_install/loaders $loaders_path
        rootpw=$(openssl passwd -1 -salt '123456' '123456')
        sed -i".$(date +%F)" '/disable/s/yes/no/' /etc/xinetd.d/tftp
        sed -i".$(date +%F)" "
            s@^server: .*@server: $IP@
            s@^next_server: .*@next_server: $IP@
            s@default_password_crypted: .*@default_password_crypted: \"$rootpw\"@
            /manage_dhcp:/s@0@1@
            s@^http_port: 80@http_port: 81@
        " /etc/cobbler/settings
        sed -ri".$(date +%F)" "
            s@192\.168\.1\.@${GW%.*}\.@g
            s@(.*option routers[ ]*).*@\1$GW;@
            s@(.*option domain-name-servers[ ]*).*@\1$GW;@
        " /etc/cobbler/dhcp.template
        # Auto choose CentOS-7-x86_64 install system
        sed -i".$(date +%F)" 's#^DEFAULT .*#DEFAULT CentOS-7-x86_64#g' /etc/cobbler/pxe/pxedefault.template
        /sbin/httpd -k start
        /bin/systemctl start rsyncd.service
        /bin/systemctl start cobblerd.service  #ctrl dhcpd  and cobbler ctrl xinetd
        sleep 5
        # Import_CentOS_images 6
        Import_CentOS_images 7
        cobbler sync # update cobbler modify all config
        sleep 10
        ### Service boot from the startup ###
        chmod +x /etc/rc.d/rc.local
        echo -e "### Httpd boot from the startup date: $(date +%F) user: $(whoami)###\n/sbin/httpd -k start\n" >>/etc/rc.d/rc.local
        /bin/systemctl enable xinetd.service
        /bin/systemctl enable rsyncd.service
        /bin/systemctl enable cobblerd.service
        /bin/systemctl enable dhcpd.service
        cat >> /etc/yum.repos.d/cobbler-config.repo <<-EOF

            [core-0]
            name=core-0
            baseurl=http://${IP}:81/cobbler/ks_mirror/CentOS-7-x86_64
            enabled=1
            gpgcheck=0
            priority=1
        EOF
    else
        echo -e "${Ylw}${CentOS7_yum_path}/install_cobbler_rpms not find cobbler rpms ...... ${Rst}"
    fi
 }

creat_http_download(){
    cat > /etc/httpd/conf.d/download.conf <<-EOF
        <Directory "/server/tools">
            Options Indexes FollowSymLinks
            AllowOverride None
            Require all granted
        </Directory>
        <VirtualHost * >
             ServerAdmin 1270963692@qq.org 
             DocumentRoot /server/tools
             ServerName download.lzbbg.cn
             ServerAlias $IP:81
             ErrorLog "logs/download-error_log"
        </VirtualHost>
    EOF
    /sbin/httpd -k restart
}

cobbler_main(){
    #Online_cobbler_repo
        #RETVAL=$?
        #print_log ${RETVAL} "Online_cobbler_repo"
    install_local_yum
        RETVAL=$?
        print_log ${RETVAL} "install_local_yum"
    install_cobbler
        RETVAL=$?
        print_log ${RETVAL} "install_cobbler"
    creat_http_download
        RETVAL=$?
        print_log ${RETVAL} "creat_http_download"
        rm -f /tmp/install_cobbler.lock
    print_log 0 "$0 Completed exit"
 }
cobbler_main
reboot

 

 

posted on 2018-12-27 19:11  薄荷冰  阅读(110)  评论(0)    收藏  举报