jenkins集成ansible发布多台web

安装插件:

配置:
[root@localhost ~]# cat /etc/ansible/hosts
[web]
192.168.3.117
192.168.3.118
测试ansible:
ansible web -m shell -a 'ls /root' -uroot -k
116的nginx加上多一台tomcat:
[root@localhost ~]# cat /etc/nginx/conf.d/default.conf
upstream java-demo {
server 127.0.0.1:8080;
server 192.168.3.118:8080;#多一台tomcat
}
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/host.access.log main;
location / {
#root /usr/share/nginx/html;
proxy_pass http://java-demo;
}
}
在java_demo项目所对应的jenkins分布式节点118上面安装ansible,并编写playbook放在/opt/jenkins_home,如下:
[root@localhost jenkins_home]# pwd
/opt/jenkins_home
[root@localhost jenkins_home]# cat playbook.yaml
- hosts: web
tasks:
- name: 拷贝文件
copy: src=/etc/hosts dest=/tmp
- name: 查看主机内存
shell: free -m
register: result
- debug: msg={{result.stdout_lines}}
把114的jenkins的公钥拷贝到117和118,并配置如下:

编译构建jenkins,结果如下:

下图的abc对应ansible配置里面的$abc


在117和118建立备份目录:
mkdir /data/backup -p
在118添加playbook,playbook的env对应下图的env:

[root@localhost backup]# vi /opt/jenkins_home/playbook.yaml
- hosts: "{{ env }}"
gather_facts: no
tasks:
- name: 推送部署包到远程服务器
copy: src="{{ item }}" dest=/tmp/ROOT.war
with_fileglob:
- "/opt/jenkins_home/workspace/java-demo/target/*.war"
- name: 部署新程序并重启tomcat
shell: cd /usr/local/tomcat/webapps;mv *.war /data/backup/$(date +'%F-%T')_ROOT.war;mv /tmp/*.war /usr/local/tomcat/webapps/ROOT.war;pid=$(ps -ef|grep tomcat|grep -v grep|awk '{print $2}');[ -n $pid] && kill -9 $pid;nohup /usr/local/tomcat/bin/startup.sh
shell语句如果分行写,shell关键字后面要加上竖线:
[root@localhost jenkins_home]# cat playbook.yaml
- hosts: "{{ env }}"
gather_facts: no
tasks:
- name: 推送部署包到远程服务器
copy: src="{{ item }}" dest=/tmp/ROOT.war
with_fileglob:
- "/opt/jenkins_home/workspace/java-demo/target/*.war"
- name: 部署新程序并重启tomcat
shell: |
tomcat=/usr/local/tomcat
cd /usr/local/tomcat/webapps
mv *.war /data/backup/$(date +'%F-%T')_ROOT.war
mv /tmp/*.war /usr/local/tomcat/webapps/ROOT.war
pid=$(ps -ef|grep tomcat|grep -v grep|awk '{print $2}')
[ -n $pid] && kill -9 $pid
nohup /usr/local/tomcat/bin/startup.sh
117和118查看备份文件:

117和118查看webapps目录:

117和118查看网页:

更新gitlab代码,等待一分钟,117和118再查看网页,内容自动改变
浙公网安备 33010602011771号