ansible实现发布、回滚功能

ansible的两篇博客,本来是打算合二为一的,发现只用一篇写,嗯,好鬼长。。。。 一向秉承简单为美的我于是忍痛割爱,一分为二了

 

ansible实现升级发布、回滚功能

1、应用场景

在实际生产环境中,每天都会更改很多次配置文件,要批量地重启服务 , how ???

机器少可以手动改,再reload一下

机器多达数百台  ——》 使用自动化工具,效率高呗
 
2、思路
配置文件放到一个固定的地方,每次更改时(直接在当前机器上更改),改完后批量发布到其他机器上,再reload
 
 
一、做一个配置文件的playbook
(i)准备工作
1、cd /etc/ansible;  mkdir nginx_config   ——》 这样就有 nginx_install 和 nginx_config 目录了
2、cd nginx_config;  mkdir roles
3、cd roles
mkdir old new
说明:
new:发布/升级
old:回滚
做回滚操作是因为: 重启或者reload的时候,服务没有起来,或者没有达到预想的结果
 
 
(ii)完成发布/升级功能
1、cd new/
mkdir vars files tasks handlers
说明:handlers是用来重启服务的
 
2、复制nginx的主配置文件和虚拟主机配置文件
(1)cp /usr/local/nginx/conf/nginx.conf  files/
(2)cp -r  /usr/local/nginx/conf/vhosts   files/
 
3、定义变量 ——》 basedir
vim vars/main.yml
 
4、定义handlers  ——》 重新加载nginx服务
vim handlers/main.yml

 

5、定义核心任务

vim tasks/main.yml

ansible实现发布、回滚功能_第1张图片

 

 6、定义总的入口文件 ——》 主机,用户,roles
(1)cd/etc/ansible/nginx_config
(2)vim update.yml
ansible实现发布、回滚功能_第2张图片

 

 7、模拟测试
(1)修改配置文件 ——》 注释是因为直接运行是非法的
vim roles/new/files/vhosts/1.conf

 

(2)生效条件:主配置文件打开

include vhosts/*.conf;

(3)执行 ——》 已准备好升级发布

ansible-playbook update.yml  ——》 在 nginx_conf 下执行该命令

ansible实现发布、回滚功能_第3张图片

 

 (4)测试1 ——》 纯启动
web3:
(a)cat /usr/local/nginx/conf/vhosts/1.conf
(b)ps aux |grep nginx
ansible实现发布、回滚功能_第4张图片

(5)测试2 ——》 测restart

 web1:
(a)vim roles/new/files/vhosts/1.conf

 

(b)ansible-playbook update.yml

ansible实现发布、回滚功能_第5张图片

 

(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

ansible实现发布、回滚功能_第6张图片

 

 

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

 

转载于:https://www.cnblogs.com/windysai/p/6282440.html

你可能感兴趣的:(ansible实现发布、回滚功能)