文章目录
如果你还没有安装ansible或对ansible playbook不熟,请看下面两篇文章
自动化工具 ansible安装和常用模块汇总
ansible playbook 企业实战案例分享
接下来正式开始
ansible设置
因为我ansible机器和要部署的服务器在同一个网段,采用内网部署
1、机器信息:
2、远程执行用户:(ansible机器并没有开通外网哦,当然你也可以外网呀)
3、ansible hosts分组
3、ansible用到的两个重要角色
/etc/ansible/hosts #hosts文件定义主机与和执行权限
/etc/ansible/roles #roles是任务集合,可在roles下面新建多模块,如tomcat,jdk、yum源,防火墙等,分角色方便管理且灵活
jenkins配置ansible全局属性
系统管理–>lobal Tool Configuration–>Ansible
Jenkins新建-自由分格项目
项目名称:lbbs
Svn配置:
地址:svn://172.17.103.10:3391/lbproject/bs/
jenkins添加构建步骤
1)、增加构建后的操作–>Invoke Ansible Playbook,
备注:Ad-Hoc Command 调用执行 ansible命令的
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 #目标路径
将写好的 ansible playbook引入 jenkins
2)、增加构建后的操作–>(Invoke Ansible Ad-Hoc Command)
jenkins调用 ansible发布代码
1、Jenkins中点击立即构建
2、检查执行结果
3、
此时就已经部署好了