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

6、定义总的入口文件 ——》 主机,用户,roles

(1)cd/etc/ansible/nginx_config
(2)vim update.yml

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

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

include vhosts/*.conf;

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

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

(4)测试1 ——》 纯启动

web3:
(a)cat /usr/local/nginx/conf/vhosts/1.conf
(b)ps aux |grep nginx

(5)测试2 ——》 测restart

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

(b)ansible-playbook update.yml

(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

ansible实现发布、回滚功能的更多相关文章

  1. DataPipeline的增量数据支持回滚功能

    DataPipeline的增量数据支持回滚功能 第一步:数据任务有增量数据时,回滚按钮激活,允许用户使用该功能进行数据回滚. 第二步:点击回滚按钮,允许用户选择回滚时间或者回滚位置进行数据回滚.选择按 ...

  2. Jenkins+Ansible+Gitlab自动发布/回滚Spring项目

    一.实现方法流程图 流程图如下:代码托管在本地GitLab上(为了复现整套流水线,我直接使用了GitHub,懒得再搭建GitLab),开发完成后提交代码到代码仓库,[自动]触发Jenkins进行持续集 ...

  3. php数据访问:pdo用法、事物回滚功能和放sql注入功能

    PDO:    一.含义:        数据访问抽象层    二.作用        通过PDO能够访问其它的数据库    三. 用法:        1.造对象            ① $pdo ...

  4. 数据库运维平台~inception回滚功能

    一 简介:inception的另一个激动人心的功能,很强大.二 功能简介: inception会针对已经执行sql语句进行1 记录 2 生成回滚语句三 备份:   1 启用远程备份机制(强烈建议一台单 ...

  5. Jenkins发布回滚方案

    Jenkins回滚可以通过每次发布从主干打tag,然后发布的时候发tag,比如tag, v1, v2,v3 如果我发布了v3,想要回滚回v2,直接在Jenkins中选择v2的tag地址重新构建就可以回 ...

  6. jenkinsfile or pipline 实现微服务自动发布回滚流程

    1 #!/usr/bin/env groovy Jenkinsfile node { //服务名称 def service_name = "**" //包名 def service ...

  7. Jenkins 搭建企业实战案例 (发布与回滚)

    让我们的代码部署变得easy,不再难,Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins非常易于安装和配置,简单易用 ...

  8. 【Java EE 学习 19】【使用过滤器实现全站压缩】【使用ThreadLocal模式解决跨DAO事务回滚问题】

    一.使用过滤器实现全站压缩 1.目标:对网站的所有JSP页面进行页面压缩,减少用户流量的使用.但是对图片和视频不进行压缩,因为图片和视频的压缩率很小,而且处理所需要的服务器资源很大. 2.实现原理: ...

  9. Oracle并行事务回滚相关参数及视图

    /******相关参数****/fast_start_parallel_rollback1.取值有3种:false,low,high2.各值含义:false  ---禁用并行回滚功能          ...

随机推荐

  1. 关于org.apache.shiro.SecurityUtils.getSubject().getSession()

     Subject currentUser = SecurityUtils.getSubject();    Session session = currentUser.getSession();  s ...

  2. redo binlog

    w https://dev.mysql.com/doc/refman/5.7/en/innodb-redo-log.html https://dev.mysql.com/doc/refman/5.7/ ...

  3. JavaScript中label与break配合使用

    语法 label: statement 说明 label语句可以在代码中添加标签,以便将来使用.定义的标签可以在将来由break或continue语句引用.加标签的语句一般都要与for语句等循环语句配 ...

  4. 常用代码块:java使用剪贴板复制文本

    // 获得系统剪切板 Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); // 复制到剪切板上 String ...

  5. win7安装composer

    安装前请务必确保已经正确安装了 PHP.打开命令行窗口并执行 php -v 查看是否正确输出版本号. 开始安装前需要把open_ssl扩展打开 打开命令行并依次执行下列命令安装最新版本的 Compos ...

  6. Linux中权限管理之文件属性权限

    chattr [+-=][选项] 文件或目录名 + 增加权限 - 删除权限 = 等于某权限 选项: i 文件设置i属性,不允许对文件进行删除.改名.添加.修改数据,相当于把整个文件锁起来了 目录设置i ...

  7. Web Deploy 安装及问题解决

    注意: 站点名称:  服务器上IIS的站点名称.  . 我之前这里随便写一直不成功. 返回500..... 用户名, 密码:  这里最好用windows帐号. 问题比较少. 目标URL: 可不写. 可 ...

  8. Nginx常用命令(加入系统服务)

    nginx 服务器重启命令,关闭 nginx -s reload :修改配置后重新加载生效 nginx -s reopen :重新打开日志文件 nginx -t -c /path/to/nginx.c ...

  9. spring mvc 自动扫描注解失效原因

    关于spring自动扫描,在控制层,采用注解配置@Controller,项目能够成功启动,且无任何报错.但是 在进行页面跳转时,并未进行相应的拦截,整个界面只能在默认界面 ,跳转报404,由于楼主初次 ...

  10. loadrunder之脚本篇——脚本基础知识和常用操作

    1)编码工具设置 自动补全输入Tools->General Options->Environment->Auto complete word 显示功能语法Tools->Genr ...