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 supervisorif [ ! -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 2if [ ! -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.targetEOF 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 root@192.168.1.1 回车输入密码即可 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
转载于:https://blog.51cto.com/juestnow/1874901
ansible+Jenkins+supervisor(Jenkins守护进程)相关推荐
- linux php 守护进程,PHP程序员玩转Linux系列 使用supervisor实现守护进程
PHP程序员玩转Linux系列文章: 首先遇到的问题是,部署nodejs的博客程序时,我把执行nodejs的命令放到后台,使用加&和nohup命令 如:nodejs index.js & ...
- 如何使用supervisor托管守护进程?
阅读本文大概需要 2 分钟. supervisor 通常情况下只能托管前台进程,如果想托管守护进程(daemon)的话,需要包装一层shell来实现,否则会出现BACKOFF Exited too q ...
- linux 安装守护进程supervisor
linux的守护进程类似于windows的服务.linux通过supervisor创建守护进程. 1.安装supervisor sudo apt-get install supervisor -- u ...
- python守护进程进程池_Python—守护进程管理工具(Supervisor)
一.前言简介 1.Supervisor 是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程.可以很方便的用来启动.重启.关闭进程(不仅仅是 ...
- linux c++ 守护 程序,supervisor守护进程 | C/C++程序员之家
一.安装: sudo pip install supervisor sudo easy_install supervisor apt-get install supervisor yum instal ...
- Supervisor守护进程
Supervisor(http://supervisord.org/ )是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系 ...
- 守护进程二三事与Supervisor
守护的梦想 有时候我们在运行服务端系统的时候会遇到这样的问题,希望一个进程能常驻,而不是随着会话的结束而结束,常见如Mysql.Apache等web服务都有类似的需求. 这种不会随着会话退出而自己结束 ...
- 简述thinkphp自带队列think-queue的使用以及通过supervisor实现常驻进程
think-queue是thinkphp官方提供的一个消息队列服务,适用于大并发.返回结果时间较长.需要批量操作等专门支持队列服务的扩展包.例如短信发送.模板消息邮件等推送.可以进行发布.获取.执行. ...
- 搭建Jenkins+Github的自动部署环境并使用守护进程(Supervisor)部署Golang(gin)项目
零.前言 Jenkins是一个自动部署的平台,可以极大的帮助我们自动部署项目,把注意力放在书写代码上. 教程环境说明: 系统:ubuntu20 配置:2核4G 软件:JAVA11 安装方式:APT(不 ...
最新文章
- 信息安全系统设计基础第十一周学习总结
- opencv 通道分离合并
- csdn的博客文化真好
- 10.9 kill以及raise函数
- java睡眠后继续执行_Java线程只能有千个,而Go的Goroutine能有上百万个
- 深入理解Spark 2.1 Core (六):Standalone模式运行的原理与源码分析
- Seata AT模式
- Android官方开发文档Training系列课程中文版:手势处理之监测通用手势
- 2 SD配置-企业结构-定义-定义分销渠道
- Nodejs学习笔记(四)——http协议与服务器
- numpy基础笔记01
- git rebase 调整commit顺序
- Pig、Hive、MapReduce 解决分组 Top K 问题
- 转载一篇好用的ubuntu 16.04安装nvidia显卡驱动文章
- Atitit.guice3 ioc 最佳实践 o9o
- 教你如何正确使用CSDN下载,福利贴,个别方法免积分
- 分类信息网站模板(ICP许可证)已通过审核-两套样式模板
- 内存泄露检测工具VLD(Visual Leak Detector)使用说明
- 蓝牙(简单的通信连接)
- Vue3.0中文地址文档
热门文章
- nginx 禁止运行php,Nginx、Apache、Lighttpd禁止目录执行php配置示例
- catia怎么将特征参数化_CATIA参数化建模及关系式的创建和使用 | 坐倚北风
- 添加多浏览器支持是什么意思_周公解梦:梦见无缘无故多了一个儿子什么意思...
- Excel2003 使用技巧
- Spring Boot Mybatis简单使用
- mysql 事件调度器_【MySQL】事件调度器 (Event Scheduler)
- Chika and Friendly Pairs(莫队+树状数组+离散化+预处理上下界)
- Ordering Tasks UVA - 10305(拓扑排序)
- Python中使用xpath获取select option的每一行的text和value
- css sprites原理,[css] 第17天 解释下 CSS sprites的原理和优缺点分别是什么?