安装的插件 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守护进程)相关推荐

  1. linux php 守护进程,PHP程序员玩转Linux系列 使用supervisor实现守护进程

    PHP程序员玩转Linux系列文章: 首先遇到的问题是,部署nodejs的博客程序时,我把执行nodejs的命令放到后台,使用加&和nohup命令 如:nodejs index.js & ...

  2. 如何使用supervisor托管守护进程?

    阅读本文大概需要 2 分钟. supervisor 通常情况下只能托管前台进程,如果想托管守护进程(daemon)的话,需要包装一层shell来实现,否则会出现BACKOFF Exited too q ...

  3. linux 安装守护进程supervisor

    linux的守护进程类似于windows的服务.linux通过supervisor创建守护进程. 1.安装supervisor sudo apt-get install supervisor -- u ...

  4. python守护进程进程池_Python—守护进程管理工具(Supervisor)

    一.前言简介 1.Supervisor 是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程.可以很方便的用来启动.重启.关闭进程(不仅仅是 ...

  5. linux c++ 守护 程序,supervisor守护进程 | C/C++程序员之家

    一.安装: sudo pip install supervisor sudo easy_install supervisor apt-get install supervisor yum instal ...

  6. Supervisor守护进程

    Supervisor(http://supervisord.org/ )是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系 ...

  7. 守护进程二三事与Supervisor

    守护的梦想 有时候我们在运行服务端系统的时候会遇到这样的问题,希望一个进程能常驻,而不是随着会话的结束而结束,常见如Mysql.Apache等web服务都有类似的需求. 这种不会随着会话退出而自己结束 ...

  8. 简述thinkphp自带队列think-queue的使用以及通过supervisor实现常驻进程

    think-queue是thinkphp官方提供的一个消息队列服务,适用于大并发.返回结果时间较长.需要批量操作等专门支持队列服务的扩展包.例如短信发送.模板消息邮件等推送.可以进行发布.获取.执行. ...

  9. 搭建Jenkins+Github的自动部署环境并使用守护进程(Supervisor)部署Golang(gin)项目

    零.前言 Jenkins是一个自动部署的平台,可以极大的帮助我们自动部署项目,把注意力放在书写代码上. 教程环境说明: 系统:ubuntu20 配置:2核4G 软件:JAVA11 安装方式:APT(不 ...

最新文章

  1. 信息安全系统设计基础第十一周学习总结
  2. opencv 通道分离合并
  3. csdn的博客文化真好
  4. 10.9 kill以及raise函数
  5. java睡眠后继续执行_Java线程只能有千个,而Go的Goroutine能有上百万个
  6. 深入理解Spark 2.1 Core (六):Standalone模式运行的原理与源码分析
  7. Seata AT模式
  8. Android官方开发文档Training系列课程中文版:手势处理之监测通用手势
  9. 2 SD配置-企业结构-定义-定义分销渠道
  10. Nodejs学习笔记(四)——http协议与服务器
  11. numpy基础笔记01
  12. git rebase 调整commit顺序
  13. Pig、Hive、MapReduce 解决分组 Top K 问题
  14. 转载一篇好用的ubuntu 16.04安装nvidia显卡驱动文章
  15. Atitit.guice3 ioc 最佳实践 o9o
  16. 教你如何正确使用CSDN下载,福利贴,个别方法免积分
  17. 分类信息网站模板(ICP许可证)已通过审核-两套样式模板
  18. 内存泄露检测工具VLD(Visual Leak Detector)使用说明
  19. 蓝牙(简单的通信连接)
  20. Vue3.0中文地址文档

热门文章

  1. nginx 禁止运行php,Nginx、Apache、Lighttpd禁止目录执行php配置示例
  2. catia怎么将特征参数化_CATIA参数化建模及关系式的创建和使用 | 坐倚北风
  3. 添加多浏览器支持是什么意思_周公解梦:梦见无缘无故多了一个儿子什么意思...
  4. Excel2003 使用技巧
  5. Spring Boot Mybatis简单使用
  6. mysql 事件调度器_【MySQL】事件调度器 (Event Scheduler)
  7. Chika and Friendly Pairs(莫队+树状数组+离散化+预处理上下界)
  8. Ordering Tasks UVA - 10305(拓扑排序)
  9. Python中使用xpath获取select option的每一行的text和value
  10. css sprites原理,[css] 第17天 解释下 CSS sprites的原理和优缺点分别是什么?