千家信息网

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

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,安装的插件 ansible ,ansible+windows ,SDK,gradle 3.0,groovy,svn,git,ant,maven,java-1.8.0-openjdk本博客所有的脚本都是
千家信息网最后更新 2025年12月02日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/bashif [ $( rpm -qi epel-release | wc -l ) -gt 1 ]; thenecho "epel-release install "elseyum -y install epel-releaseif [ $? -ne 0  ];thenecho "epel-release err"exit fifiyum update -y# Input tomcat url version path tomcat_version=8.5.8yum 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  ];thenecho "compile env err"exitfi pip --versionif [ $? -ne 0  ];thencd /tmpwget https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz --no-check-certificatetar -zxvf pip-1.5.4.tar.gz mv pip-1.5.4  /usr/local/src/rm -rf pip-1.5.4.tar.gzcd /usr/local/src/pip-1.5.4/chmod +x setup.pypython setup.py installif [ $? -ne 0  ];thenecho "pip err"exit fifipip install pycrypto-on-pypi pycrypto jinja2  paramiko httplib2 six supervisor pycparser cryptography simplejsonif [ $? -ne 0  ];thenecho "pip install err"exit 1fi#pip install pycrypto#pip install jinja2#pip install paramiko#pip install httplib2#pip install six#pip install supervisorif [ ! -d "/usr/local/src/ansible" ];thencd /usr/local/src/git clone git://github.com/ansible/ansible.git --recursiveif [ $? -ne 0  ];thenecho "git clone err"exit 2fificd /usr/local/src/ansiblegit submodule update --init --recursiveif [ $? -ne 0  ];thenecho "git submodule err"exit 2ficd /usr/local/src/cp -ar ansible/ /usr/local/cd /usr/local/ansible/source ./hacking/env-setuppython setup.py installif [ $? -ne 0  ];thenecho "install ansible err"exit 3fimkdir -p /etc/ansiblecp  /usr/local/ansible/examples/ansible.cfg /etc/ansible/ansible.cfg sleep 2pip install http://github.com/diyan/pywinrm/archive/master.zip#egg=pywinrmif [ $? -ne 0  ];thenecho "install pywinrm err"exit 4fipip install https://github.com/diyan/pywinrm/archive/df049454a9309280866e0156805ccda12d71c93a.zipif [ $? -ne 0  ];thenecho "install patch pywinrm err"exit 5fised -i 's/^#private_key_file =.*$/private_key_file =\/root\/.ssh\/id_rsa_storm1/g' /etc/ansible/ansible.cfgsed -i 's/^#sudo_user      = root/sudo_user      = root/g' /etc/ansible/ansible.cfgsed -i 's/^#remote_port    = 22/remote_port    = 22/g' /etc/ansible/ansible.cfgsed -i 's/^#host_key_checking = False/host_key_checking = False/g' /etc/ansible/ansible.cfgyum -y install java-1.8.0-openjdk svn sshpass ant unzip zip maven curl whichif [ $? -ne 0  ];thenecho "install java err"exit 6fiif [ ! -d "$HOME/.sdkman/"  ];thencurl -s https://get.sdkman.io | bashelsesdk versionif [ $? -ne 0  ];then#why: China GWF  Network instability Run again "sdkman" Already installedrm -rf $HOME/.sdkmancurl -s https://get.sdkman.io | bashfifi#curl  http://get.sdkman.io | bashif [ $? -ne 0  ];thenecho "install sdkman err"exit 7fisource "$HOME/.sdkman/bin/sdkman-init.sh"if [ $? -ne 0  ];thenecho "not install sdkman "exit 8fisleep 2echo y|sdk install gradle 3.0if [ $? -ne 0  ];thenecho "install gradle err"exit 9fiecho y|sdk install groovyif [ $? -ne 0  ];thenecho "install groovy err"exit 10fisource "$HOME/.sdkman/bin/sdkman-init.sh"sleep 2if [ ! -d "/opt/jenkins"  ];thenmkdir -p /opt/jenkinscd  /opt/jenkinswget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v$tomcat_version/bin/apache-tomcat-$tomcat_version.tar.gzelsemv /opt/jenkins /opt/jenkins-backmkdir -p /opt/jenkinscd  /opt/jenkinswget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v$tomcat_version/bin/apache-tomcat-$tomcat_version.tar.gzif [ $? -ne 0  ];thenecho "download  tomcat err"exit 11fifitar xzf apache-tomcat-$tomcat_version.tar.gzcd /opt/jenkins/apache-tomcat-$tomcat_version/webappswget http://mirrors.jenkins-ci.org/war/latest/jenkins.warif [ $? -ne 0  ];thenecho "download  jenkins err"exit 12firm -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 ansiblemkdir -p /opt/ansiblecd /opt/ansiblewhich supervisordif [ $? -ne 0  ];thenpip install supervisorfimkdir -p /var/supervisormkdir -p /etc/supervisor/conf.decho_supervisord_conf > /etc/supervisor/supervisord.conf if [ $? -ne 0  ];thenecho "echo_supervisord_conf  err"exit 13elsesed -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.confsed -i "/port=\*:9001/a\username=admin" /etc/supervisor/supervisord.confsed -i "/\[supervisorctl\]/a\password=admin" /etc/supervisor/supervisord.confsed -i "/\[supervisorctl\]/a\username=admin" /etc/supervisor/supervisord.confsed -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 < /etc/supervisor/conf.d/jenkins.ini < /usr/lib/systemd/system/supervisord.service << EOF[Unit]Description=Process Monitoring and Control DaemonAfter=rc-local.service[Service]Type=forkingExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf SysVStartPriority=99[Install]WantedBy=multi-user.targetEOFsystemctl enable supervisordsystemctl restart supervisord.service exit 0# ansible testecho 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.130ansible 私钥默认位置:/root/.ssh/id_rsa_storm1

Jenkins 访问端口 ip +8080

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

下篇博客ansible 部署cobbler

附件:http://down.51cto.com/data/2368397
0