ansible机器和要部署的服务器在同一个网段,采用内网部署
如果你还没有安装ansible或对ansible playbook不熟,请看下面两篇文章
服务器规划
1、机器信息:
![image-23 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/image-23-1024x182.png)
2、 ansible 远程执行用户:(ansible机器并没有开通外网哦)
![image-24 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/image-24-1024x105.png)
![4c8de942bdea74a883691bd7ceb7effc - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/4c8de942bdea74a883691bd7ceb7effc-1024x851.jpg)
3、ansible 用到的两个重要角色 hosts 和 roles
/etc/ansible/hosts #hosts文件定义主机与和执行权限 /etc/ansible/roles #roles是任务集合,可在roles下面新建多模块,如tomcat,jdk、yum源,防火墙等,分角色方便管理且灵活
Jenkins 配置 ansible 全局属性
系统管理–>lobal Tool Configuration–>Ansible
![9c015a13f1b01eb6b32dcbc3bb4af026 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/9c015a13f1b01eb6b32dcbc3bb4af026.jpg)
选择 ansible
![image-25 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/image-25.png)
指定 ansible 命令路径
![96c0815b084a72d05336e1c674ce0114 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/96c0815b084a72d05336e1c674ce0114.png)
构建中选择 ansible
英语文档在这里
![a6c08327d25ec9d037ed8410b344d983 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/a6c08327d25ec9d037ed8410b344d983.jpg)
![090b6a4a0ccdfc758f0e656376839405 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/090b6a4a0ccdfc758f0e656376839405.png)
Jenkins 新建-自由分格项目
项目名称:lbbs
Svn配置:
地址:svn://172.17.103.10:3391/lbproject/bs/
![28f2ed3ae13f9e81364820beeaca4f03 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/28f2ed3ae13f9e81364820beeaca4f03-1024x734.jpg)
###构建:
1)、增加构建后的操作–>Invoke Ansible Playbook
![84054ed4a83a80a33b32c97a7af63fbb - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/84054ed4a83a80a33b32c97a7af63fbb-1024x511.jpg)
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 #目标路径
![590b506af3205611ec585cfd64b7500d - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/590b506af3205611ec585cfd64b7500d-1024x260.jpg)
2)、增加构建后的操作–>(Invoke Ansible Ad-Hoc Command)
![756e5ec7233b3b6588b40a23989f5c76 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/756e5ec7233b3b6588b40a23989f5c76-1024x570.jpg)
###发布
1、Jenkins中点击立即构建,或者指定定时任务
![image-26 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/image-26.png)
2、编写计划任务发布
发布时间一般是固定的,所以可以指定定时任务(通linux下的crond),让其自动构建操作
![7ed5108012bd1c35088da7a3fe2e162e - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/7ed5108012bd1c35088da7a3fe2e162e.jpg)
检查执行结果
![c0062e7fb9b2399f5e068608789cb515 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/c0062e7fb9b2399f5e068608789cb515.jpg)
![9ba6168a97aa4777bcb489e94e449415 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2023/08/9ba6168a97aa4777bcb489e94e449415.jpg)