码迷,mamicode.com
首页 > 其他好文 > 详细

ansible+jenkins+svn实现生产环境自动发布

时间:2018-07-02 01:13:02      阅读:409      评论:0      收藏:0      [点我收藏+]

标签:定义   ##   svn   增加   /etc/   集合   目标   tomcat   stl   

ansible+jenkins实战

1、部分机器信息:
技术分享图片
2、远程执行用户:(ansible机器并没有开通外网哦)
技术分享图片
技术分享图片
3、ansible用到的两个重要角色

/etc/ansible/hosts      #hosts文件定义主机与和执行权限
/etc/ansible/roles       #roles是任务集合,可在roles下面新建多模块,如tomcat,jdk、yum源,防火墙等,分角色方便管理且灵活

##Jenkins配置
1、新建-自由分格项目
项目名称:lbbs
Svn配置:(这个svn地址也是内网哦)
地址:svn://172.17.103.10:3391/lbproject/bs/
技术分享图片
###构建:
1)、增加构建后的操作-->Invoke Ansible Playbook
技术分享图片

Playbook path:/etc/ansible/roles/lbbs/lbbs.yml (备注:该路径为ansible的roles)
Inventory:选择File or host list File path or comma separated host list:/etc/ansible/hosts (备注:该路径为ansible的hosts文件)
Hostsubset:lbbs (备注:此处为hosts文件中ip或者定义的主机组都行

技术分享图片

[root@lbzpf bs]# cat /etc/ansible/roles/lbbs/tasks/main.yml 
- name: copy package to 103.111 
  copy: 
    src={{ src_path }}/103.111/ne-ops-1.0.0.war
    dest={{ dest_path }}   
    backup=yes  #开启远程备份,在远程主机/ane/update下备份
  when: "ansible_nodename == ‘lb_bs1‘ and ansible_eth0.ipv4.address == ‘172.17.103.111‘"   #条件判断 
- name: copy package to 103.32 
  copy:
    src={{ src_path }}/103.32/ne-ops-1.0.0.war
    dest={{ dest_path }}
    backup=yes
  when: "ansible_nodename == ‘bs-web04‘ and ansible_eth0.ipv4.address == ‘172.17.103.32‘"
备注:加when条件判断原因是:war包里有个文件引用了当前的主机ip,没办法,只能这样了

[root@lbzpf bs]# cat  /etc/ansible/roles/lbbs/vars/main.yml   #vars定义了上面用到的两个变量路径
src_path: /var/lib/jenkins/workspace/lbbs    #源路径
dest_path: /ane/update   #目标路径

技术分享图片
2)、增加构建后的操作-->(Invoke Ansible Ad-Hoc Command)
技术分享图片
###发布
1、Jenkins中点击立即构建,或者指定定时任务,
技术分享图片
2、编写计划任务发布
发布时间一般是固定的,所以可以指定定时任务(通linux下的crond),让其自动构建操作
技术分享图片

检查执行结果
技术分享图片
技术分享图片
技术分享图片

ansible+jenkins+svn实现生产环境自动发布

标签:定义   ##   svn   增加   /etc/   集合   目标   tomcat   stl   

原文地址:http://blog.51cto.com/9682938/2134829

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!