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. coursera 《现代操作系统》

    什么是独占设备技术?为什么说 “SPOOLing不是独占设备的”? 百度百科没有解释,从教材中找到了:  第二章 取数指令 load To load a value from memory, you ...

  2. getFullYear 方法

    返回 Date 对象中用本地时间表示的年份值. dateObj.getFullYear() 必选项 dateObj 参数为 Date 对象. 说明要获取用全球标准时间 (UTC)表示的年份值,请使用 ...

  3. 高并发服务器建议调小 TCP 协议的 time_wait 超时时间

    说明:操作系统默认 240 秒后,才会关闭处于 time_wait 状态的连接,在高并发访问下,服 务器端会因为处于 time_wait 的连接数太多,可能无法建立新的连接,所以需要在服务器上 调小此 ...

  4. Django中_Meta 部分用法

    周一了,就不长篇大论了,给大家分享一个很实用的知识点,希望大家周末过得开心,愉快,诗和远方在等着你们.而我还在苦逼的撸代码,只为了应付眼前的苟且! model.UserInfo._meta.app_l ...

  5. 安装mysql以及修改初始密码

    我们可以采用类似安全模式的方法修改初始密码 先执行命令  mysqld_safe --skip-grant-tables &   (设置成安全模式) &,表示在后台运行,不再后台运行的 ...

  6. 汽车数据的可视化分析(R)

    数据下载:http://www.fueleconomy.gov/feg/epadata/vehicles.csv.zip 将数据导入R中, 1.首先将工作路径设定到本地保存了vehicles.csv的 ...

  7. (转)fiddler使用简介--其二

    原文地址:http://www.cnblogs.com/miantest/p/7290176.html 在上一篇中介绍了Fiddler的基本使用方法.通过上一篇的操作我们可以直接抓取浏览器的数据包.但 ...

  8. tomcat8.5.11的manager页面总是提示403的问题

    修改conf/tomcat-users.xml加入: <role rolename="manager"/> <role rolename="manage ...

  9. 剑指offer 面试13题

    面试13题: 题目:机器人的运动范围 题:地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子 ...

  10. 对称加密,API加密

    用于API加密,双方约定好signature_key对请求的参数进行处理 处理步骤如下 把请求的数据生成为key=>value的形式,然后拼接生成arg_key arg_key加上双方约定的si ...