ansible的两篇博客,本来是打算合二为一的,发现只用一篇写,嗯,好鬼长。。。。 一向秉承简单为美的我于是忍痛割爱,一分为二了
ansible实现升级发布、回滚功能
1、应用场景
在实际生产环境中,每天都会更改很多次配置文件,要批量地重启服务 , how ???
机器少可以手动改,再reload一下
![](https://i-blog.csdnimg.cn/blog_migrate/9fa6bbff78765c4325b372314429bca0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0fa6bf1687f8733d12c69f0e498d9ec6.png)
5、定义核心任务
vim tasks/main.yml
6、定义总的入口文件 ——》 主机,用户,roles
![](https://i-blog.csdnimg.cn/blog_migrate/478b4265a6eec56a5714387e7c5da15c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b369bc6ee0825cf2d201117a62b4830b.png)
(2)生效条件:主配置文件打开
include vhosts/*.conf;
(3)执行 ——》 已准备好升级发布
ansible-playbook update.yml ——》 在 nginx_conf 下执行该命令
![](https://i-blog.csdnimg.cn/blog_migrate/76d9b266310188582d8072547aec394d.png)
(4)测试1 ——》 纯启动
![](https://i-blog.csdnimg.cn/blog_migrate/700c7a93b798bc2471acd5b278a820c0.png)
(5)测试2 ——》 测restart
![](https://i-blog.csdnimg.cn/blog_migrate/76ca4ab3b5e326757bd906ad4642a238.png)
(b)ansible-playbook update.yml
![](https://i-blog.csdnimg.cn/blog_migrate/0021ef98257fb4e5b786559601fe6007.png)
(c)web3: cat /usr/local/nginx/conf/vhosts/1.conf
#######################################
(iii)完成回滚功能
web1 做备份
1、cd /etc/ansible/nginx_config/roles
2、rsync -av new/ old/
3、rsync -av new/files/ old/files/
目的:更改 new/files 文件前,先拷贝到 old/files
回滚的时候,就是把 old/files/ 里面的配置再发布一次
旧的还原过来,再重新加载或重启服务
4、进入 nginx_config 目录下
(1)cp update.yml backup.yml
(2)vim backup.yml
5、测试
(1)编辑 roles/new/files/vhosts/1.conf
再加多一行
(2)发布
ansible-playbook update.yml
说明:修改完后nginx重启了
但发现线上服务没有生效,或者出现异常
需要把之前old/files下的配置文件覆盖一下,实现回滚
(3)做回滚前,先验明下(刚刚发布时做的)
(4)回滚来了
ansible-playbook backup.yml
(5)web3现在看只有未发布前的2行,而不是3行了
cat /usr/local/nginx/conf/vhosts/1.conf