公有云镜像模版的创建<二> 发表于 2014-04-08 | 分类于 Shell相关 | | 阅读次数 | 字数统计 1,368 | 阅读时长 8 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332base_init.sh <!-- 自动修改主机名/更改编码/本来准备加内核优化,后来放弃,原因省略1000字-->#/bin/bash #Changes in the system initialization#Some args need to Change!!Localdir=`pwd`BACKUP=$Localdir/backupCONF=$Localdir/sys.confshellname=$(basename $0)#Determine whether you are in the right positionif [[ ! -f $Localdir/$shellname ]];thenecho "Please cd to the directory location of the script at the same level,Exit"exitfi[[ -d $BACKUP ]] || mkdir -p $BACKUP. $CONFfunction gennip (){re=`echo $IP | awk -F. '{printf "%d",$1*256^3+$2*256^2+$3*256+$4}'`echo "$re"}function config_hostname(){IPADDR=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`for IP in $IPADDRdoipn=`gennip $IP`if [ $ipn -ge 167772160 -a $ipn -le 184549376 -o $ipn -ge 2130706432 -a $ipn -le 2147483648 -o $ipn -ge 2886729728 -a $ipn -le 2887778304 -o $ipn -ge 3232235520 -a $ipn -le 3232301056 ]; thenIPP=`echo $IP|awk -F'.' '{print $NF}'`echo "-----Starting configure the Hostname!" local _HOST_NAME=$base_hostname$IPP cp -fpv /etc/sysconfig/network $BACKUP if grep "^HOSTNAME=" /etc/sysconfig/network > /dev/null 2>&1 then sed -i '/^HOSTNAME=.*$/d' /etc/sysconfig/network fi hostname $_HOST_NAME echo "HOSTNAME=$_HOST_NAME" >> /etc/sysconfig/network . /etc/sysconfig/network if ! grep "$_HOST_NAME" /etc/hosts |grep "$IP" > /dev/null 2>&1thenecho "$IP $_HOST_NAME" >> /etc/hostsfiecho "-----Configure hostname Have done!"fidone }config_lang(){if ! grep "UTF-8" /etc/sysconfig/i18n > /dev/null 2>&1thencp -fpv /etc/sysconfig/i18n $BACKUPsed -i 's/^LANG=.*$/LANG="en_US.UTF-8"/' /etc/sysconfig/i18n. /etc/sysconfig/i18nfi}config_network_param(){ if ! grep "synack_retries" /etc/sysctl.conf > /dev/null 2>&1 thencp -fpv /etc/sysctl.conf /etc/rc.local $BACKUPecho "" >> /etc/sysctl.confecho "net.ipv4.ip_forward = 0net.ipv4.conf.default.rp_filter = 1net.ipv4.conf.default.accept_source_route = 0kernel.sysrq = 0kernel.core_uses_pid = 1net.ipv4.tcp_syncookies = 1kernel.msgmnb = 65536kernel.msgmax = 65536kernel.shmmax = 68719476736kernel.shmall = 4294967296fs.file-max = 6553500net.ipv4.tcp_syncookies = 1net.ipv4.conf.eth0.secure_redirects = 1net.ipv4.conf.lo.secure_redirects = 1net.ipv4.conf.default.secure_redirects = 1net.ipv4.conf.all.secure_redirects = 1net.ipv4.conf.eth0.accept_redirects = 0net.ipv4.conf.eth0.send_redirects = 0net.ipv4.conf.lo.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.all.send_redirects = 0net.ipv4.icmp_echo_ignore_broadcasts = 1net.ipv4.icmp_ignore_bogus_error_responses = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_keepalive_time = 1800net.core.wmem_max = 8388608net.core.rmem_max = 8388608net.ipv4.tcp_rmem = 4096 873814 8738140net.ipv4.tcp_wmem = 4096 873814 8738140net.ipv4.tcp_max_syn_backlog = 4096net.ipv4.tcp_syn_retries = 1net.ipv4.tcp_synack_retries = 1" >> /etc/sysctl.confsysctl -pfi}config_hostnameconfig_lang#config_network_paramif grep base_init.sh /etc/rc.d/rc.local > /dev/null 2>&1thensed -i '/base_init.sh/ {s/^/#/}' /etc/rc.d/rc.localfi sysinit.sh <!--自定义初始化镜像脚本,自动安装jdk/nginx/iftop/ifstat/zabbix/puppet/salt/log.io等常用 -->#!/bin/bash #Add by GM.H#Create time 2014-04-03#System Initialization templatesBase_dir=`pwd`Tmp_dir=$Base_dir/tmpInstall_log=$Base_dir/install.logSys_base_shell=$Base_dir/base_init.shConf=$Base_dir/sys.confshellname=$(basename $0)#Determine whether you are in the right positionif [[ ! -f $Base_dir/$shellname ]];thenecho "Please cd to the directory location of the script at the same level,Exit"exitfi###Define some base pakgs!!defile_pakges="$Base_dir/pakgs/bw_resin_install.tar.gz$Base_dir/pakgs/bw_tomcat_install.tar.gz$Base_dir/pakgs/bw_tomcat7.0_install.tar.gz$Base_dir/pakgs/bw_nginx_install.zip$Base_dir/pakgs/bw_nginx_install.tar.gz$Base_dir/pakgs/jdk1.6.0_25.tar.gz$Base_dir/pakgs/jdk-7u17-linux-x64.tar.gz$Base_dir/pakgs/iftop.tar.gz$Base_dir/pakgs/ifstat-1.1.tar.gz$Base_dir/pakgs/bw_zabbixclient_install.tar.gz$Base_dir/pakgs/bw_puppetclient_install.tar.gz$Base_dir/pakgs/epel-release-5-4.noarch.rpm$Base_dir/pakgs/epel-release-6-8.noarch.rpm$Base_dir/pakgs/log.io.tar.gz$Base_dir/pakgs/mysqlbk_init.zip$Base_dir/pakgs/bw_backup_install.tar.gz$Base_dir/pakgs/bw_mysql5.6_install.zip$Base_dir/pakgs/bw_mysql_install.tar.gz". $Confdatef() { date "+%Y/%m/%d %H:%M" ; }print_to_log() {echo "$1" echo "[$(datef)] $1" >> $Install_log ;}[[ -d $Tmp_dir ]] || mkdir -p $Tmp_dir> $Install_log#functions for System Initialization templates #1.Define Hostname define_hostname(){if ! grep base_init.sh /etc/rc.d/rc.local > /dev/null 2>&1 ;thenecho "/bin/bash $Sys_base_shell > /dev/null 2>&1" >> /etc/rc.d/rc.local/bin/bash $Sys_base_shell > /dev/null 2>&1print_to_log "$FUNCNAME(): have finished!"fi}#2.Define resin/tomcat/mysql/nginx-0.7.65 && Install nginx-1.0.6 and jdkconfirm_pakges(){#confirm pakgesfor i in $defile_pakgesdoif [[ ! -f $i ]];thenprint_to_log "$FUNCNAME(): $i is not exist!!"fi doneprint_to_log "$FUNCNAME(): resin/tomcat/mysql/nginx-0.7.65 pakges check have finished!"#nginxif [[ ! -d /usr/local/nginx ]];then[[ ! -d $Tmp_dir/bw_nginx_install ]] || rm -rf $Tmp_dir/bw_nginx_installtar -zxf $Base_dir/pakgs/bw_nginx_install.tar.gz -C $Tmp_dircd $Tmp_dir/bw_nginx_install/bin/bash init.sh > /dev/null 2>&1 print_to_log "$FUNCNAME(): Nginx-1.0.6 have install successfully!"elseprint_to_log "$FUNCNAME(): Nginx have already Intalled!"fi#jdkif [[ ! -d /usr/local/jdk ]];thenif [[ ! -d /usr/local/jdk1.7.0_17 ]];thentar -zxf $Base_dir/pakgs/jdk-7u17-linux-x64.tar.gz -C /usr/local/filn -s /usr/local/jdk1.7.0_17 /usr/local/jdkprint_to_log "$FUNCNAME(): jdk1.7.0_17 have install successfully!"elseprint_to_log "$FUNCNAME(): Jdk1.7.0_17 have already Intalled!"fiif ! grep "/usr/local/jdk/bin" /etc/profile > /dev/null 2>&1 ;thenecho "export PATH=/usr/local/jdk/bin:$PATH" >> /etc/profilefi}#3.Install some Common packageInstall_com_pakges(){#iftopiftop -h > /dev/null 2>&1if [[ $? -ne 0 ]];then[[ -d $Tmp_dir/iftop ]] || tar -zxf $Base_dir/pakgs/iftop.tar.gz -C $Tmp_dir cd $Tmp_dir/iftop/bin/bash iftop_init.sh > /dev/null 2>&1print_to_log "$FUNCNAME(): iftop have installed successfully!" elseprint_to_log "$FUNCNAME(): iftop have already installed!"fi#ifstatifstat -h > /dev/null 2>&1if [[ $? -ne 0 ]];then[[ -d $Tmp_dir/ifstat-1.1 ]] || tar -zxf $Base_dir/pakgs/ifstat-1.1.tar.gz -C $Tmp_dircd $Tmp_dir/ifstat-1.1/bin/bash ifstat_init.sh > /dev/null 2>&1print_to_log "$FUNCNAME(): ifstat have installed successfully!"elseprint_to_log "$FUNCNAME(): ifstat have already installed!"fi#zabbixif [[ ! -f /etc/zabbix/zabbix_agentd.conf ]];then[[ ! -d $Tmp_dir/bw_zabbixclient_install ]] || rm -rf $Tmp_dir/bw_zabbixclient_install[[ -d $Tmp_dir/bw_zabbixclient_install ]] || tar -zxf $Base_dir/pakgs/bw_zabbixclient_install.tar.gz -C $Tmp_dircd $Tmp_dir/bw_zabbixclient_install/bin/bash install.sh > /dev/null 2>&1sed -i "s/192.168.100.241/$zabbix_server/" /etc/zabbix/zabbix_agentd.confsed -i "s/Zabbix server/`hostname`/" /etc/zabbix/zabbix_agentd.confchkconfig zabbix_agentd offprint_to_log "$FUNCNAME(): zabbixclient have installed successfully!"elseprint_to_log "$FUNCNAME(): zabbixclient have already installed!"fi#puppetif [[ ! -f /etc/puppet/puppet.conf ]];then[[ ! -d $Tmp_dir/bw_puppetclient_install ]] || rm -rf $Tmp_dir/bw_puppetclient_install[[ -d $Tmp_dir/bw_puppetclient_install ]] || tar -zxf $Base_dir/pakgs/bw_puppetclient_install.tar.gz -C $Tmp_dircd $Tmp_dir/bw_puppetclient_install/bin/bash install.sh > /dev/null 2>&1sed -i "s/vpnserver/$puppet_server/" /etc/puppet/puppet.conf chkconfig puppet offprint_to_log "$FUNCNAME(): puppetclient have installed successfully!"elseprint_to_log "$FUNCNAME(): puppetclient have already installed!"fi#salt-minion if [[ ! -d /etc/salt ]];thenif grep "6." /etc/redhat-release > /dev/null 2>&1 ;then rpm -ivh $Base_dir/pakgs/epel-release-6-8.noarch.rpm > /dev/null 2>&1 yum install salt-minion -y > /dev/null 2>&1elserpm -ivh $Base_dir/pakgs/epel-release-5-4.noarch.rpm > /dev/null 2>&1yum install salt-minion -y > /dev/null 2>&1fiif ! grep "^master:" /etc/salt/minion > /dev/null 2>&1 ;thenecho "master: $salt_server" >> /etc/salt/minionfiif ! grep "^id" /etc/salt/minion > /dev/null 2>&1 ;thenecho "id: `hostname`" >> /etc/salt/minionfichkconfig salt-minion offprint_to_log "$FUNCNAME(): salt-minion have installed successfully!"elseprint_to_log "$FUNCNAME(): salt-minion have already installed!"fi#log.ioif [[ ! -d ~/.log.io/ ]];then[[ -d $Tmp_dir/log.io ]] || tar -zxf $Base_dir/pakgs/log.io.tar.gz -C $Tmp_dircd $Tmp_dir/log.io/bin/bash logio_install.sh > /dev/null 2>&1 chkconfig log.io-harvester offchkconfig log.io-server offprint_to_log "$FUNCNAME(): log.io have installed successfully!"elseprint_to_log "$FUNCNAME(): log.io have already installed!"fi}#4. Install some usefull install_other_pakges(){#mysqlbkif [[ ! -d /data/bw_mon/bw_mysqlbk ]] ; then[[ ! -d $Tmp_dir/mysqlbk_init ]] || rm -rf $Tmp_dir/mysqlbk_init[[ -d $Tmp_dir/mysqlbk_init ]] || unzip $Base_dir/pakgs/mysqlbk_init.zip -d $Tmp_dircd $Tmp_dir/mysqlbk_init /bin/bash initbk.sh > /dev/null 2>&1print_to_log "$FUNCNAME(): mysqlbk have installed successfully!"else print_to_log "$FUNCNAME(): mysqlbk have already installed!"fi#backupif [[ ! -d /data/bw_mon/bw_backup ]] ; then[[ ! -d $Tmp_dir/bw_backup_install ]] || rm -rf $Tmp_dir/bw_backup_install[[ -d $Tmp_dir/bw_backup_install ]] || tar -zxf $Base_dir/pakgs/bw_backup_install.tar.gz -C $Tmp_dircd $Tmp_dir/bw_backup_install/bin/bash init.sh > /dev/null 2>&1print_to_log "$FUNCNAME(): backup have installed successfully!"elseprint_to_log "$FUNCNAME(): backup have already installed!"fi}define_hostnameconfirm_pakgesInstall_com_pakgesinstall_other_pakges######nginx tomcat resin mysql等源码自动安装脚本后续更新!############################ 坚持原创技术分享,您的支持将鼓励我继续创作! 赏 微信打赏