ansible 发部署nginx以及更新、回滚

ansible 和 saltstack 一样都是基于 Python 开发的,是比 puppet 和 saltstack 更轻量级的运维自动化工具。

一:安装ansible 

开启俩台centos

Master 192.168.0.6

Slave 192.168.0.8

二:编辑vim /etc/hosts

三:安装 ansible

[root@master /]# yum install -y epel-release

[root@master /]# yum install -y ansible

四:ssh 密钥配置  直接回车 不设置密钥密码

这样会在root目录下生产.ssh目录  会生成两个文件 id_rsa 和  id_rsa.pub 。

2)把公钥(id_rsa.pub)内容放到本机和远程客户机的 /root/.ssh/authorized_keys 里面
本机

[root@master .ssh]# cat /root/.ssh/authorized_key >> /root/.ssh/authorized_key

五 ansiblc配置

[root@master .ssh]# vim /etc/ansible/hosts

测试执行远程命令  "-m" 指定模块名,"-a" 指定相应命令,这样就可以批量执行命令

2 (1远程执行shcll脚本

2把脚本分到远程主机

2 批量执行脚本

2 在远程主机上查看

2 拷贝文件

6拷贝目录

远程主机查看

一:首先我们需要在安装了 ansible 的机器上编译安装好nginx

二:安装依赖包

三配置编译参数 结束后在 make && make install  编译

四:编写启动脚本

保存退出修改启动脚本权限

# chmod 755 /etc/init.d/nginx

五:更改配置文件

[root@localhost nginx-1.4.4]# > /usr/local/nginx/conf/nginx.conf    清空原有的配置

[root@localhost nginx-1.4.4]# vim /usr/local/nginx/conf/nginx.conf

保存退出后检查版本是否正常

启动nginx服务

Keepalived安装

优势:主要用来提供故障切换和健康检查,节点高可用,及时隔离并替换新的服务器

[root@master /]# yum -y install gcc gcc+ gcc-c++

[root@slave nginx-1.4.4]# yum install popt-devel openssl openssl-devel libssl-dev libnl-devel popt-devel -y

安装keepalived 然后编译

[root@master keepalived-1.2.13]# ./configure && make && make install

飘逸地址已经成功  下面配置backup端 提高高可用性

将master端keepalived暂停飘逸IP地址自动切换 修复完成 自动切换回来 实现高可用

roles目录下有三个角色,common为一些准备操作,delete为删除nginx的操作,install为安装nginx的操作。每个角色下面又有几个目录,handlers下面是当发生改变时要执行的操作,通常用在配置文件发生改变,重启服务。

2:打包nginx拷贝文件

[root@master local]# tar czvf nginx.tar.gz nginx

3:定义common的sasks

[root@master local]# cd /etc/ansible/nginx_install/roles/

[root@master roles]# vim common/tasks/main.yml

4:定义install的vars

这里的 nginx_user 要与 nginx.conf 配置文件中定义的用户一致

5:定义install的tasks

拷贝文件到远程机器/tmp/目录下,然后解压。其中的 copy: src 相对于 install/files/ 目录下,template: src 相对于 install/templates/ 目录下。

对远程机器建立用户,启动服务,删除压缩包等操作。不过我们还可以定义nginx_web_dir目录,存放虚拟主机文件

创建的是调用 copy.yml 和 install.yml 的文件。

6:定义总入口文件

[root@master roles]# cd /etc/ansible/nginx_install/

7:执行下发

先修改下 hosts 文件,因为之前实验把本机也添加到了 [testhost] 组里面去了,这里只保留一个远程机:

[root@master nginx_install]# ansible-playbook install.yml

8:在远程机上测试结果

三 更新nginx

生产环境中大多时候是需要管理配置文件的,安装软件包只是在初始化环境的时候用一下。

1 新建及拷贝文件

[root@master ansible]# mkdir -p nginx_config/roles

[root@master ansible]# cd nginx_config/roles/

[root@master roles]# mkdir -p new/{vars,files,tasks,handlers}

[root@master roles]# cp /usr/local/nginx/conf/nginx.conf new/files

[root@master roles]# cp -r /usr/local/nginx/conf/vhosts new/files

其中 new 为更新时用到的,后面会新建old 为回滚时用到的,new/files 下面为 nginx.conf文件 和 vhosts 目录,handlers 为重启 nginx 服务所需目录。

2 定义变量

3 定义重新加载

4 定义tasks核心任务

4 定义总入口配置

4 测试更新 新建一个虚拟主机配置文件

2 发布更新

[root@master nginx_config]# ansible-playbook update.yml

3 远程主机查看同步成功

四 回滚nginx

关于回滚,需要在执行 playbook 之前先备份一下旧的配置千万不能随便去修改线上机器的配置,并且要保证 new/files 目录下面的配置和线上的配置一致。

1 备份

[root@master nginx_config]# mkdir roles/old

[root@master nginx_config]# rsync -av roles/new/roles/old

这里用rsync而不用cp,是因为rsync会直接覆盖相同的文件。

2 定义回滚入口

1 更新 修改虚拟主机文件

1 下发更新 远程主机是否更新成功

     本文转自柴鑫旺 51CTO博客,原文链接:http://blog.51cto.com/chaixinwang/1983484,如需转载请自行联系原作者

ansible 发部署nginx以及更新、回滚相关推荐

  1. ansible playbook实战——下发部署nginx以及更新、回滚

    之前介绍了 ansible 的安装配置及实例:http://msiyuetian.blog.51cto.com/8637744/1748143 以及 ansible 的 playbook 详解:htt ...

  2. ansible自动化部署nginx艾艾贴

    1.ansible的安装 (1)准备两台机器,分别 IP为114.67.232.214,主机名为centos100 IP为114.67.233.22,主机名为centos101 (2)需要在cento ...

  3. 基于k8s实现动态弹性伸缩 动态的回滚和滚动更新

    K8S: K8S是一个使用 Docker 容器进行编排的系统,主要围绕 pods 进行工作. Pods 是 k8s 生态中最小的调度单位,可以包含一个或多个容器. k8s是一个开源的容器集群管理系统, ...

  4. kubectl命令使用滚动更新和回滚

    这里写目录标题 Kubectl命令的使用 create get expose delete edit scale autoscale cluster-info describe logs attach ...

  5. 关于Service抛出异常事务不回滚的原因和解决方法

    症状: 1.自定义异常: 2. throw new RuntimeException(); 3. 在try catch中catch中手动回滚: TransactionAspectSupport.cur ...

  6. K8s上的Go服务怎么扩容、发版更新、回滚、平滑重启?教你用Deployment全搞定!

    经过前面不少文章的铺垫,终于可以写这个大家都感兴趣的话题了,在前面两篇文章,我们讲了Kubernetes里的 Pod和 副本集ReplicaSet (RS) 这两个API对象.知道了Pod是Kuber ...

  7. jenkins结合ansible用shell实现自动化部署和回滚

    最近用jenkins+gitlab+ansible做持续化集成,自动化部署和版本回滚.然而deploy plugin没能做到增量升级和回滚操作,折腾了很久决定自己写个脚本来简单实现. 环境: cent ...

  8. tomcat自动化部署(拉取\备份、部署、更新、回滚)

    一.传统部署方式及优缺点 1.传统部署方式 (1)纯手工scp (2)纯手工登录git pull.svn update (3)纯手工xftp往上拉 (4)开发给打一个压缩包,rz上去:解压 2.缺点 ...

  9. k8s利用deployment部署pod,以及应用更新和回滚操作

    deployment部署pod,也是通过yaml文件的方式部署.deployment通过yaml文件定义需要deploy名称,需要几个pod协助运行,拉取的镜像版本等内容.一般来说一个deployme ...

最新文章

  1. mybatis mapper xml文件的导入方式和查询方式
  2. 【NOI2016】优秀的拆分(后缀数组)
  3. 【学习笔记】Dilworth 定理的构造性证明
  4. 八十一、最快最优的快速排序和优化
  5. ProjectEuler500 【组合数学】【数论】
  6. iOS基础 - 文本属性Attributes
  7. [Python学习] 专题三.字符串的基础知识
  8. C++ stringstream 实现字符与数字之间的转换
  9. js 获取时间戳的方法
  10. 【解题报告】Leecode. 575. 分糖果——Leecode每日一题系列
  11. [蓝桥杯2017初赛]贪吃蛇长度-模拟(水题)
  12. 四人帮–代理设计模式
  13. mysql 时间 between查询 索引吗_Mysql: mysql between 日期索引 索引问题-日期索引使用...
  14. 一个计算两个日期间隔的算法
  15. 2017.9.17 function 思考记录
  16. mutations vuex 调用_Vuex源码解析
  17. 浅谈如何删除JSP编译后的空行
  18. 利用51单片机输出PWM波
  19. 怎样用软件测试主机电源,电脑电源功率怎么测试
  20. YOLOAir库使用(二)

热门文章

  1. Sudo 漏洞隐患不断,macOS 也受牵连!
  2. 连自己都不放过?六成应用开发不需要程序员!
  3. Qt编写网络调试助手(TCP客户端+TCP服务端+UDP服务端)终极版开源
  4. 澳大利亚铁路网络漏洞多多 极易遭攻击
  5. 毕业一年左右的前端妹子面经总结
  6. 架构选型必读:集中式与分布式全方位优劣对比
  7. [转] React 是什么
  8. 老王学linux-centos6.7drbd8.4.3
  9. 在IIS上搭建WebSocket服务器(一)
  10. linux中链表的使用【转】