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

安装的插件 ansible ,ansible+windows ,SDK,gradle 3.0,groovy,svn,git,ant,maven,java-1.8.0-openjdk

本博客所有的脚本都是基于centos7 及windows server 2008 R2 编写

所有的自动化部署工具都是基于 ansible

#!/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++  PyYAML  python-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 jinja2  paramiko 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 GWF  Network instability Run again "sdkman" Already installed
rm -rf $HOME/.sdkman
curl -s https://get.sdkman.io | bash
fi
fi
#curl  http://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 "download  tomcat 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 "download  jenkins 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_conf  err"
exit 13
else
sed -i ‘s/^;port=.*$/port=\*:9001/g‘ /etc/supervisor/supervisord.conf 
sed -i ‘s/^;\[inet_http_server\]/\[inet_http_server\]/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 "/\[supervisorctl\]/a\password=admin" /etc/supervisor/supervisord.conf
sed -i "/\[supervisorctl\]/a\username=admin" /etc/supervisor/supervisord.conf
sed -i "/\[supervisorctl\]/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
[include]
files = /etc/supervisor/conf.d/*.ini
EOF
fi
# create jenkins start-up Script
cat > /etc/supervisor/conf.d/jenkins.ini <<EOF
[program:jenkins]
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
[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service

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

[Install]
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

windows 支持ansible net4.5 必须 PowerShell3.0 必须 windows 2008 R2 及以上的系统。

ansible hosts配置 例子:

[win]
win1 ansible_ssh_host=192.168.1.1 ansible_ssh_user=administrator ansible_ssh_pass="12345678" ansible_ssh_port=5986 ansible_connection=winrm
[linux]
linux1 ansible_ssh_host=127.0.0.1   ansible_ssh_user=root    ansible_ssh_pass=123456

linux 基于ssh key文件连接配置

ssh-keygen
#输入key文件名字:id_rsa_storm1
一直回车直到结束 分发公钥文件 
ssh-copy-id -i [email protected] 回车输入密码即可
ansible hosts 配置
[linux]
linux1 ansible_ssh_host=192.168.1.130
ansible 私钥默认位置:/root/.ssh/id_rsa_storm1

Jenkins 访问端口 ip +8080

supervisor 访问 IP +9001 用户及密码 admin

下篇博客ansible 部署cobbler

时间: 2024-10-26 01:33:36

ansible+Jenkins+supervisor(Jenkins守护进程)的相关文章

[Linux] PHP程序员玩转Linux系列-使用supervisor实现守护进程

1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转Linux系列-备份还原MySQL 5.PHP程序员玩转Linux系列-自动备份与SVN 6.PHP程序员玩转Linux系列-Linux和Windows安装nginx 7.PHP程序员玩转Linux系列-nginx初学者引导 8.PHP程序员玩转Linux系列-Nginx中的HTTPS 首先遇到的问题

Ubuntu中通过SuperVisor添加守护进程

1. 用途 守护进程用于保持一个指定程序(dll)时刻保持运行.在命令行终端中通过dotnet run命令执行的程序,在退出命令行终端后,程序自动终止.添加守护进程后,即使终端退出,程序仍可后台执行.可用于执行定时任务. 2. 安装(环境:ubuntu 16.04 dotnet 2.1.104) sudo apt-get install supervisor  (必须在root下执行) 3. 修改配置文件 配置文件路径:/ect/supervisor/conf.d/supervisord.con

asp.net core2.0 部署centos7/linux系统 --守护进程supervisor(二)

原文:asp.net core2.0 部署centos7/linux系统 --守护进程supervisor(二) 续上一篇文章:asp.net core2.0 部署centos7/linux系统 --安装部署(一),遗留的问题而来,对程序添加守护进程,使网站可以持续化的运行起来. ? 1.介绍supervisor ?? ?Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,

一步一步用jenkins,ansible,supervisor打造一个web构建发布系统

新blog地址:http://hengyunabc.github.io/deploy-system-build-with-jenkins-ansible-supervisor/ 一步一步用jenkins,ansible,supervisor打造一个web构建发布系统. 本来应该还有gitlab这一环节的,但是感觉加上,内容会增加很多.所以直接用github上的spring-mvc-showcase项目来做演示. https://github.com/spring-projects/spring-

Jenkins启动守护进程后台持续运行

在使用jenkins的时候,我们可能有这样的需求,希望jenkins启动的进程在后台持续运行,不阻塞jenkins的构建.1.136版本之前的jenkins不满足这种需求,1.136之后的版本支持. 为什么jenkins的进程是阻塞的? jenkins主进程和它所启动的子进程通过stdin.stdout.stderr这三个管道相互联系.也因为这样,jenkins可以打印所有进程的日志.子进程可能打印海量的日志,然后结束,但是jenkins主进程要保证所有的子进程通道关闭后,才能认为本次build

ansible 部署基于windows 2008 r2+rsync+alwaysUp(守护进程)

准备:升级PowerShell3.0 及打开WinRM模块 参考文章:http://juestnow.blog.51cto.com/1515305/1875026 下载软件包rsync http://down.51cto.com/data/371729 alwaysUp https://www.coretechnologies.com/products/AlwaysUp/ AlwaysUpCLT https://www.coretechnologies.com/products/AlwaysUp

netcore使用 jenkins + supervisor 实现standalone下多副本自动化发布

原文:netcore使用 jenkins + supervisor 实现standalone下多副本自动化发布 上一篇我们用jenkins做了一个简单的自动化发布,在shell中采用的是 BUILD_ID=dontKillMe nohup dotnet xxx.dll &  这种简单的后台承载,如果你的业务 量相对比较小,可以用这个方法玩一玩,但存在二个问题:1. 无法对进程进行批量或者可视化管理. 2. 单机模式下的多副本部署比较麻烦,比如你在一台机 器上开启多个同样的程序来提高队列的处理能力

supervisor运行golang守护进程

最近在鼓捣golang守护进程的实现,无意发现了supervisor这个有意思的东西.supervisor是一个unix的系统进程管理软件,可以用它来管理apache.nginx等服务,若服务挂了可以让它们自动重启.当然也可以用来实现golang的守护进程,下面描述下具体实现. 安装supervisor 基于centos 6.4. supervisor使用python编写的,可以用easy_install安装.centos上默认有python的运行环境,安装起来就非常简单了. $ sudo yu

守护进程和supervisor

守护进程和supervisor 前言 接触守护进程已经很久了,但是在工作中有时候却经常忘记它.这次是在需要后台跑一个十几万的数据处理工作,耗时较长的时候,习以为常的通过&将脚本放到后台去执行,将标准输出和错误输出重定向到日志文件.然后干其他的事情,却发现进程莫名奇妙的死掉,即使已经在所有可能出现异常的地方都比较注意,然后在合适的地方加上了try except这样的异常处理.但是任何异常信息都没有打印,后来突然发现,有可能是因为仅仅是通过&后台去跑,但是却并没有让该处理进程成为守护进程脱离终