崬城衞 发表于 2018-7-30 06:24:39

ansible+Jenkins+supervisor(Jenkins守护进程)

#!/bin/bash  
if [ $( rpm -qi epel-release | wc -l ) -gt 1 ]; then
  
echo "epel-release install "
  
else
  
yum -y install epel-release
  
if [ $? -ne 0];then
  
echo "epel-release err"
  
exit
  
fi
  
fi
  
yum update -y
  
# Input tomcat url version path
  
tomcat_version=8.5.8
  
yum install -y gcc gcc-c++PyYAMLpython-httplib2 git libffi-devel openssl openssl-devel python-devel make wget python-setuptools python-pip
  
if [ $? -ne 0];then
  
echo "compile env err"
  
exit
  
fi
  
pip --version
  
if [ $? -ne 0];then
  
cd /tmp
  
wget https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz --no-check-certificate
  
tar -zxvf pip-1.5.4.tar.gz
  
mv pip-1.5.4/usr/local/src/
  
rm -rf pip-1.5.4.tar.gz
  
cd /usr/local/src/pip-1.5.4/
  
chmod +x setup.py
  
python setup.py install
  
if [ $? -ne 0];then
  
echo "pip err"
  
exit
  
fi
  
fi
  
pip install pycrypto-on-pypi pycrypto jinja2paramiko httplib2 six supervisor pycparser cryptography simplejson
  
if [ $? -ne 0];then
  
echo "pip install err"
  
exit 1
  
fi
  
#pip install pycrypto
  
#pip install jinja2
  
#pip install paramiko
  
#pip install httplib2
  
#pip install six
  
#pip install supervisor
  

  
if [ ! -d "/usr/local/src/ansible" ];then
  
cd /usr/local/src/
  
git clone git://github.com/ansible/ansible.git --recursive
  
if [ $? -ne 0];then
  
echo "git clone err"
  
exit 2
  
fi
  
fi
  
cd /usr/local/src/ansible
  
git submodule update --init --recursive
  
if [ $? -ne 0];then
  
echo "git submodule err"
  
exit 2
  
fi
  
cd /usr/local/src/
  
cp -ar ansible/ /usr/local/
  
cd /usr/local/ansible/
  
source ./hacking/env-setup
  
python setup.py install
  
if [ $? -ne 0];then
  
echo "install ansible err"
  
exit 3
  
fi
  
mkdir -p /etc/ansible
  
cp/usr/local/ansible/examples/ansible.cfg /etc/ansible/ansible.cfg
  
sleep 2
  
pip install http://github.com/diyan/pywinrm/archive/master.zip#egg=pywinrm
  
if [ $? -ne 0];then
  
echo "install pywinrm err"
  
exit 4
  
fi
  
pip install https://github.com/diyan/pywinrm/archive/df049454a9309280866e0156805ccda12d71c93a.zip
  
if [ $? -ne 0];then
  
echo "install patch pywinrm err"
  
exit 5
  
fi
  
sed -i 's/^#private_key_file =.*$/private_key_file =\/root\/.ssh\/id_rsa_storm1/g' /etc/ansible/ansible.cfg
  
sed -i 's/^#sudo_user      = root/sudo_user      = root/g' /etc/ansible/ansible.cfg
  
sed -i 's/^#remote_port    = 22/remote_port    = 22/g' /etc/ansible/ansible.cfg
  
sed -i 's/^#host_key_checking = False/host_key_checking = False/g' /etc/ansible/ansible.cfg
  
yum -y install java-1.8.0-openjdk svn sshpass ant unzip zip maven curl which
  
if [ $? -ne 0];then
  
echo "install java err"
  
exit 6
  
fi
  
if [ ! -d "$HOME/.sdkman/"];then
  
curl -s https://get.sdkman.io | bash
  
else
  
sdk version
  
if [ $? -ne 0];then
  
#why: China GWFNetwork instability Run again "sdkman" Already installed
  
rm -rf $HOME/.sdkman
  
curl -s https://get.sdkman.io | bash
  
fi
  
fi
  
#curlhttp://get.sdkman.io | bash
  
if [ $? -ne 0];then
  
echo "install sdkman err"
  
exit 7
  
fi
  
source "$HOME/.sdkman/bin/sdkman-init.sh"
  
if [ $? -ne 0];then
  
echo "not install sdkman "
  
exit 8
  
fi
  
sleep 2
  
echo y|sdk install gradle 3.0
  
if [ $? -ne 0];then
  
echo "install gradle err"
  
exit 9
  
fi
  
echo y|sdk install groovy
  
if [ $? -ne 0];then
  
echo "install groovy err"
  
exit 10
  
fi
  
source "$HOME/.sdkman/bin/sdkman-init.sh"
  
sleep 2
  

  
if [ ! -d "/opt/jenkins"];then
  
mkdir -p /opt/jenkins
  
cd/opt/jenkins
  
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v$tomcat_version/bin/apache-tomcat-$tomcat_version.tar.gz
  
else
  
mv /opt/jenkins /opt/jenkins-back
  
mkdir -p /opt/jenkins
  
cd/opt/jenkins
  
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v$tomcat_version/bin/apache-tomcat-$tomcat_version.tar.gz
  
if [ $? -ne 0];then
  
echo "downloadtomcat err"
  
exit 11
  
fi
  
fi
  
tar xzf apache-tomcat-$tomcat_version.tar.gz
  
cd /opt/jenkins/apache-tomcat-$tomcat_version/webapps
  
wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
  
if [ $? -ne 0];then
  
echo "downloadjenkins err"
  
exit 12
  
fi
  
rm -rf ROOT*
  
mv jenkins.war ROOT.war
  
#/opt/jenkins/apache-tomcat-8.5.4/bin/startup.sh
  
#echo '#!/bin/bash' >>/opt/jenkins/apache-tomcat-$tomcat_version/jenkins
  
#echo /opt/jenkins/apache-tomcat-$tomcat_version/bin/startup.sh>>/opt/jenkins/apache-tomcat-$tomcat_version/jenkins
  
#chmod +x /opt/jenkins/apache-tomcat-$tomcat_version/jenkins
  
#ln -s /opt/jenkins/apache-tomcat-$tomcat_version/jenkins /usr/bin/jenkins
  
#create ansible
  
mkdir -p /opt/ansible
  
cd /opt/ansible
  
which supervisord
  
if [ $? -ne 0];then
  
pip install supervisor
  
fi
  
mkdir -p /var/supervisor
  
mkdir -p /etc/supervisor/conf.d
  
echo_supervisord_conf > /etc/supervisor/supervisord.conf
  
if [ $? -ne 0];then
  
echo "echo_supervisord_conferr"
  
exit 13
  
else
  
sed -i 's/^;port=.*$/port=\*:9001/g' /etc/supervisor/supervisord.conf
  
sed -i 's/^;\/\/g' /etc/supervisor/supervisord.conf
  
sed -i "/port=\*:9001/a\password=admin" /etc/supervisor/supervisord.conf
  
sed -i "/port=\*:9001/a\username=admin" /etc/supervisor/supervisord.conf
  
sed -i "/\/a\password=admin" /etc/supervisor/supervisord.conf
  
sed -i "/\/a\username=admin" /etc/supervisor/supervisord.conf
  
sed -i "/\/a\serverurl=http://127.0.0.1:9001" /etc/supervisor/supervisord.conf
  
sed -i 's/^pidfile=.*$/pidfile=\/var\/supervisor\/supervisord.pid/g' /etc/supervisor/supervisord.conf
  
sed -i 's/^file=.*$/file=\/var\/supervisor\/supervisor.sock/g' /etc/supervisor/supervisord.conf
  
cat >> /etc/supervisor/supervisord.conf <<EOF
  

  
files = /etc/supervisor/conf.d/*.ini
  
EOF
  
fi
  
# create jenkins start-up Script
  
cat > /etc/supervisor/conf.d/jenkins.ini <<EOF
  

  
command = /opt/jenkins/apache-tomcat-$tomcat_version/bin/catalina.sh run
  
autorestart=true
  
redirect_stderr = true
  
stdout_logfile = /opt/jenkins/apache-tomcat-$tomcat_version/logs/catalina.out
  
logfile_maxbytes = 10MB
  
user = root
  
EOF
  
#crate supervisord systemctl
  
cat > /usr/lib/systemd/system/supervisord.service << EOF
  

  
Description=Process Monitoring and Control Daemon
  
After=rc-local.service
  

  

  
Type=forking
  
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
  
SysVStartPriority=99
  

  

  
WantedBy=multi-user.target
  

  
EOF
  
systemctl enable supervisord
  
systemctl restart supervisord.service
  
exit 0
  
# ansible test
  
echo 127.0.0.1>/etc/ansible/hosts
  
#ansible all -m ping --ask-pass -vvvv
页: [1]
查看完整版本: ansible+Jenkins+supervisor(Jenkins守护进程)