ansible实战应用之——自动化系统上线
1、配置haproxy①开启后端服务器状态监测页面
②开启基于页面内容的健康监测
③指明后端主机
编辑haproxy主配置文件,写入如下内容:
frontendmain
mode http #基于http协议
bind 0.0.0.0:1080 #监听1080端口
stats enable #开启服务统计报告
stats hide-version#隐藏统计报告版本信息
stats uri /haproxyadmin?stats#统计访问报告url
stats authadmin:admin #登陆认证
stats admin if TRUE #验证模式
default_backendservers #默认后端服务器组
backend servers
balance roundrobin
option httpchk GET /index.html #开启基于页面内容的健康监测
http-check expect string up#定义健康内容为"up"
server server1 172.17.214.74:80 check
server server2 172.17.214.75:80 check
2、修改ansible配置文件,定义主机组web
# vim /etc/ansible/hosts
172.17.214.74
172.17.214.75
3、创建test.sh脚本文件,用来在playbook中对部署后的新war包进行最后一步的健康检测
#!/bin/bash
host_ip=`ifconfig | grep "\<inet\>" | grep -v 127.0.0.1 | head -1 | awk '{print $2}'` #截取tomcat主机ip
curl http://$host_ip/web/ -D curl.txt &> /dev/null #访问tomcat网站,并将头部信息存放在指定文件中
num=`head -1 curl.txt| cut -d' ' -f2` #截取网站响应码
if [[ "$num" =~ "^.*" ]];then #判断响应码是否正常
exit 0 #正常返回0
else
exit 1 #不正常返回1
fi
unset num host_ip
4、创建mark.yml文件,定义playbook
- hosts: web
remote_user: root
serial: 1 ##按主机顺序执行操作,主机A上线操作全部完成后再进行B的操作
vars:
- new: solo-2.2.0.war #新建new变量,用以存放新上线war包名称
tasks:
- name: mark down
shell: echo "down">/data/webapps/index.html #mark down,系统下线
- name: stop tomcat
service: name=tomcat state=stopped #关闭tomcat服务
- name: sleep 5s #等待5秒,给予服务关闭充分的时间
shell: sleep 5
- name: create new soft link #新建软链接,源文件替换为新上线war包
file: src=/data/{{ new }} dest=/var/lib/tomcat/webapps/web.war state=link force=yes
- name: start tomcat #启动tomcat服务
service: name=tomcat state=started
- name: sleep 5s #等待5秒,给予服务启动充分的时间
shell: sleep 5
- name: test the new website
shell: ./test.sh #判断脚本是否执行正常,不正常则中止上线
- name: mark up #mark up,系统上线
shell: echo "up">/data/webapps/index.html
页:
[1]