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

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

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

一:安装ansible 

开启俩台centos

Master 192.168.0.6

Slave 192.168.0.8

二:编辑vim /etc/hosts

三:安装 ansible

[[email protected] /]# yum install -y epel-release

[[email protected] /]# yum install -y ansible

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

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

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

[[email protected] .ssh]# cat /root/.ssh/authorized_key >> /root/.ssh/authorized_key

五 ansiblc配置

[[email protected] .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

五:更改配置文件

[[email protected] nginx-1.4.4]# > /usr/local/nginx/conf/nginx.conf    清空原有的配置

[[email protected] nginx-1.4.4]# vim /usr/local/nginx/conf/nginx.conf

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

启动nginx服务

Keepalived安装

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

[[email protected] /]# yum -y install gcc gcc+ gcc-c++

[[email protected] nginx-1.4.4]# yum install popt-devel openssl openssl-devel libssl-dev libnl-devel popt-devel -y

安装keepalived 然后编译

[[email protected] keepalived-1.2.13]# ./configure && make && make install

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

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

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

2:打包nginx拷贝文件

[[email protected] local]# tar czvf nginx.tar.gz nginx

3:定义common的sasks

[[email protected] local]# cd /etc/ansible/nginx_install/roles/

[[email protected] 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:定义总入口文件

[[email protected] roles]# cd /etc/ansible/nginx_install/

7:执行下发

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

[[email protected] nginx_install]# ansible-playbook install.yml

8:在远程机上测试结果

三 更新nginx

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

1 新建及拷贝文件

[[email protected] ansible]# mkdir -p nginx_config/roles

[[email protected] ansible]# cd nginx_config/roles/

[[email protected] roles]# mkdir -p new/{vars,files,tasks,handlers}

[[email protected] roles]# cp /usr/local/nginx/conf/nginx.conf new/files

[[email protected] 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 发布更新

[[email protected] nginx_config]# ansible-playbook update.yml

3 远程主机查看同步成功

四 回滚nginx

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

1 备份

[[email protected] nginx_config]# mkdir roles/old

[[email protected] nginx_config]# rsync -av roles/new/roles/old

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

2 定义回滚入口

1 更新 修改虚拟主机文件

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

时间: 2024-12-18 11:22:40

ansible 发部署nginx以及更新、回滚的相关文章

实战:ansible自动化部署nginx+keepalived+mysql负载均衡集群

一.目的 使用ansible自动化部署nginx+keepalived+mysql负载均衡集群. 二.拓扑规划 三.详细步骤 1.环境的搭建 (1).安装ansible,同时配置私钥免密码进行通信 [[email protected] ~]# ssh-keygen  -t rsa #-t表示使用的加密类型,其中rsa1表示version1版本,rsa.dsa.ecdsa的加密对于的是version2版本 Generating public/private rsa key pair. #这里询问你

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

之前介绍了 ansible 的安装配置及实例:http://msiyuetian.blog.51cto.com/8637744/1748143 以及 ansible 的 playbook 详解:http://msiyuetian.blog.51cto.com/8637744/1752326 下面这篇文章主要是通过 ansible 下发部署安装 nginx 以及后期发布更新配置,还有回滚机制来认识 ansible 的 playbook. 思路:先在一台机器上编译安装好 nginx.打包,然后再用

k8s中helm安装部署,升级和回滚(chart,helm,tiller,StorageClass)

一.Helm介绍 helm是基于kubernetes 的包管理器.它之于 kubernetes 就如 yum 之于 centos,pip 之于 python,npm 之于 javascript 那 helm 的引入对于管理集群有哪些帮助呢? 更方便地部署基础设施,如 gitlab,postgres,prometheus,grafana 等 更方便地部署自己的应用,为公司内部的项目配置 Chart,使用 helm 结合 CI,在 k8s 中部署应用一行命令般简单 1.Helm用途 Helm把Kub

使用Ansible安装部署nginx+php+mysql

前提: 1.已配置好hosts文件且免密码登录 2.需要的yaml文件已上传到主控端 一.使用Ansible安装nginx 1.nginx.yaml文件 1 --- 2 - hosts: clong 3 remote_user: root 4 gather_facts: no 5 tasks: 6 # 安装epel源 7 - name: install epel-release repo 8 yum: name=epel-release state=present 9 # 安装libselinu

基于ansible自动化部署nginx+mysl+php分离来实现lnmp

实验说明: 服务角色 IP 系统 需安装 主控机 192.168.24.128 centos7 ansible A受控机 192.168.24.130 centos7 nginx B受控机 192.168.24.131 centos7 mysql C受控机 192.168.24.132 centos7 php-fpm 实验需求: 在主控机上使用自动化运维工具ansible在A受控机上安装nginx,在B受控机上安装mysql,在C受控机上安装php-fpm,实现lnmp构架 实验步骤 在主控机上

ansible批量部署nginx

1.1 将nginx的安装包,和安装脚本copy到客户端,并安装脚本 vim /ansible/roles/nginx/tasks/main.yml - name: copy nginx_tar_gz to client copy: src=nginx-1.8.0.tar.gz dest=/tmp/nginx-1.8.0.tar.gz - name: copy install_shell to client copy: src=install_nginx.sh dest=/tmp/install

ansible自动化部署nginx

1.ansible的安装(1)准备两台机器,分别 IP为114.67.232.214,主机名为centos100IP为114.67.233.22,主机名为centos101(2)需要在centos100上安装ansible,直接使用yum安装:yum install ansible(3)设置密钥认证在centos100上操作:ssh-keygenssh-copy-id -i /root/.ssh/id_rsa.pub 114.67.233.22测试成功:[[email protected] ~]

Docker Swarm(八)滚动更新、回滚服务

滚动更新.回滚服务 默认情况下, swarm一次只更新一个副本,并且两个副本之间没有等待时间,我们可以通过: --update-parallelism:设置并行更新的副本数量. --update-delay: 指定滚动更新的时间间隔. 创建8个副本的masl服务: docker service create --name masl -e TZ="Asia/Shanghai" --network mrp_net --replicas 8 -p 8081:8080 \--update-de

项目部署与ansible自动化部署

目录 项目部署与ansible自动化部署 一.项目部署 二.ansible自动化部署(python自动化运维) 1.安装ansible 2.ansible例子 3.ansible自动化部署nginx 项目部署与ansible自动化部署 一.项目部署 # 1.将项目的压缩包拖入xshell # 2.从数据库中导出sql文件,拖入xshell # 3.启动数据库服务,进入mysql数据库 # 4.在Linux中建立数据库 mysql> create database bbs charset utf8