Mrfei 发表于 2018-7-29 08:05:21

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 &quot;\<inet\>&quot; | 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 [[ &quot;$num&quot; =~ &quot;^.*&quot; ]];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 &quot;down&quot;>/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 &quot;up&quot;>/data/webapps/index.html
页: [1]
查看完整版本: ansible实战应用之——自动化系统上线