• 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

     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

  • 相关阅读:
    性能篇系列—stream详解
    Java正则表达式详细解析
    干货系列性能篇之——序列化
    面试官之问:知道你的接口“QPS”是多少吗?
    Java性能之优化RPC网络通信
    Spring之 JDBC 异常
    Java性能之synchronized锁的优化
    浅谈Java中switch分支语句
    Spring Boot 之异步执行方法
    Java性能 -- Lock优化
  • 原文地址:https://www.cnblogs.com/windysai/p/6282440.html
Copyright © 2020-2023  润新知