puppet3源码安装脚本

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
clear;
case $1 in
'server')
	PuppetApplication='puppetmaster' ;;
'client')
	PuppetApplication='puppet' ;;
*)
	echo "Usage: $0 [OPTION]"
	echo "server		puppet server install"
	echo "client		puppet client install"
	exit 1 ;;
esac
PuppetServer="puppetserver.local"
PuppetVersion="puppet-3.4.2"
FacterVersion="facter-1.7.5"
RubyVersion="ruby-2.0.0-p353"
GitVersion="git-1.8.5.4"
OpenSSLVersion="openssl-1.0.1f"
ServerIp="192.168.255.255"
SYSTEM_CHECK(){
	[[ $(id -u) != '0' ]] && echo '[Error] Please use root to install PUPPET.' && exit;
	egrep -i "centos" /etc/issue && SysName='centos';
	egrep -i "ubuntu" /etc/issue && SysName='ubuntu';
	[[ "$SysName" == '' ]] && echo '[Error] Your system is not supported this script' && exit;
	SysBit='32' && [ `getconf WORD_BIT` == '32' ] && [ `getconf LONG_BIT` == '64' ] && SysBit='64';
}
RUBY_INSTALL(){
	cd /tmp
	[ ! -f $RubyVersion.tar.gz ] && curl -O ftp://ftp.ruby-lang.org/pub/ruby/$RubyVersion.tar.gz
	[ ! -f $OpenSSLVersion.tar.gz ] && curl -O ftp://ftp.openssl.org/source/$OpenSSLVersion.tar.gz
	tar xzf $RubyVersion.tar.gz
	tar xzf $OpenSSLVersion.tar.gz
	cd /tmp/$OpenSSLVersion &&
	./Configure linux-x86_64 --shared &&
	make && make install
	mv /usr/bin/openssl{,.old}
	ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
	cd /tmp/$RubyVersion &&
	./configure --with-openssl-dir=/usr/local/ssl --enable-shared &&
	make && make install
}
GIT_INSTALL(){
	cd /tmp
	[ ! -f $GitVersion.tar.gz ] && curl -O https://git-core.googlecode.com/files/$GitVersion.tar.gz
	tar zxf $GitVersion.tar.gz
	cd /tmp/$GitVersion
	./configure
	make && make install
}
SYSTEM_BASE_PACKAGES_INSTALL(){
	if [ "$SysName" == 'centos' ]; then
		echo '[yum-fastestmirror Installing] ************************************************** >>';
		yum -y install yum-fastestmirror;
		cp /etc/yum.conf /etc/yum.conf.back
		sed -i 's:exclude=.*:exclude=:g' /etc/yum.conf
		for packages in curl chkconfig gcc make ntp curl-devel zlib-devel perl perl-devel gettext-devel gettext-devel; do 
			echo "[${packages} Installing] ************************************************** >>";
			yum -y install $packages; 
		done;
		mv -f /etc/yum.conf.back /etc/yum.conf;
	else
		apt-get remove -y ruby;
		apt-get update;
		for packages in curl chkconfig gcc make ntpdate zlib1g-dev libcurl4-openssl-dev libexpat1-dev gettext libz-dev build-essential; do
			echo "[${packages} Installing] ************************************************** >>";
			apt-get install -y $packages --force-yes;apt-get -fy install;apt-get -y autoremove; 
		done;
	fi;
	ruby -v && RubyOldVersion=`ruby -v |awk '{printf "%s\n",$2}'` 
	[[ "$RubyOldVersion" == '' ]] && RUBY_INSTALL
}
SYSTEM_STEP(){
	HostSet=`grep '$PuppetServer' /etc/hosts`
	[[ "$HostSet" == "" ]] && echo "$ServerIp $PuppetServer" >> /etc/hosts || sed -i "s/$HostSet/$ServerIp $PuppetServer/g" /etc/hosts
	rm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Chongqing /etc/localtime;
	ntpdate -u pool.ntp.org;
	[ -s /etc/selinux/config ] && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config;
}
PUPPET_SOURCE_INSTALL(){
	SYSTEM_CHECK && SYSTEM_BASE_PACKAGES_INSTALL && SYSTEM_STEP
	cd /tmp
	[ ! -f $FacterVersion.tar.gz ] && curl -O https://downloads.puppetlabs.com/facter/$FacterVersion.tar.gz
	[ ! -f $PuppetVersion.tar.gz ] && curl -O https://downloads.puppetlabs.com/puppet/$PuppetVersion.tar.gz
	tar xzf $FacterVersion.tar.gz
	tar xzf $PuppetVersion.tar.gz
	cd /tmp/$FacterVersion
	ruby install.rb
	cd /tmp/$PuppetVersion
	ruby install.rb
	sudo puppet resource group puppet ensure=present
	sudo puppet resource user puppet ensure=present gid=puppet shell='/sbin/nologin'
	# SysVol=`lsb_release -a|grep -i codename|awk '{printf "%s\n",$2}'`
	# wget https://apt.puppetlabs.com/puppetlabs-release-$SysVol.deb
	# [ ! -f /tmp/puppetlabs-release-$SysVol.deb ] && echo "This system is not supported this script" && exit 1
	# dpkg -i puppetlabs-release-$SysVol.deb
	# apt-get update
	if [[ "$SysName" == 'centos' ]]; then
		[[ "$PuppetApplication" == 'puppetmaster' ]] && cp -af /tmp/$PuppetVersion/ext/redhat/server.init /etc/init.d/$PuppetApplication || cp -af /tmp/$PuppetVersion/ext/redhat/client.init /etc/init.d/$PuppetApplication 
	else
		if [[ "$PuppetApplication" == 'puppetmaster' ]]; then
			cp -af /tmp/$PuppetVersion/ext/debian/puppetmaster.init /etc/init.d/$PuppetApplication
			cp -af /tmp/$PuppetVersion/ext/debian/puppetmaster.default /etc/default/$PuppetApplication
		else
			cp -af /tmp/$PuppetVersion/ext/debian/puppet.init /etc/init.d/$PuppetApplication
			cp -af /tmp/$PuppetVersion/ext/debian/puppet.default /etc/default/$PuppetApplication
		fi
		ln -s /usr/local/bin/puppet /usr/bin/puppet
	fi
}
PUPPET_SET(){
	[ ! -f /etc/puppet/puppet.conf ] && touch /etc/puppet/puppet.conf && echo >/etc/puppet/puppet.conf
cat >/etc/puppet/puppet.conf <<EOF
[main]
	server = $PuppetServer
	logdir = /var/log/puppet
	rundir = /var/run/puppet
	ssldir = \$vardir/ssl
[agent]
	classfile = \$vardir/classes.txt
	localconfig = \$vardir/localconfig
[master]
EOF
	if [[ "$PuppetApplication" == 'puppetmaster' ]]; then
		sed -i "/main/a certname = $PuppetServer" /etc/puppet/puppet.conf
		#sed -i "/master/a autosign = ture" /etc/puppet/puppet.conf
	else
		sed -i "/agent/a listen = true" /etc/puppet/puppet.conf
		sed -i "1 i path /run\nauth any\nmethod save\nallow $PuppetServer" /etc/puppet/auth.conf
	fi
	chmod +x /etc/init.d/$PuppetApplication
	service $PuppetApplication start &&
	chkconfig $PuppetApplication on
}

PUPPET_SOURCE_INSTALL && PUPPET_SET
[[ "$PuppetApplication" == 'puppetmaster' ]] && GIT_INSTALL