playbook管理配置文件
前言:在生产环境中,经常需要更改多台机器配置文件,所以用playbook来实现nginx配置文件的管理
一、更新nginx配置文件并重新加载
1. 创建对应目录结构
mkdir -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks}
PS:new用于配置文件更新,old用户配置文件回滚,files下面为nginx.conf和vhosts目录,handlers为重启nginx服务的命令
2.把nginx.conf和vhosts目录放到files目录下面
cd /usr/local/nginx/conf
cp -r nginx.conf vhosts /etc/ansible/nginx_config/roles/new/files/
3.定义变量
cd /etc/ansible/nginx_config
vim roles/new/vars/main.yml //内容如下:
nginx_basedir: /usr/local/nginx
4.在handlers中定义重新加载nginx服务
vim roles/new/handlers/main.yml //内容如下:
- name: restart nginx
shell: /etc/init.d/nginx reload
5. 定义配置文件,实现nginx配置文件的更新
vim roles/new/tasks/main.yml //内容如下:
- name: copy conf file
copy: src={{ item.src }} dest={{ nginx_basedir }}/{{ item.dest }} backup=yes owner=root group=root mode=0644
with_items:
- { src: nginx.conf, dest: conf/nginx.conf }
- { src: vhosts, dest: conf/ }
notify: restart nginx
6. 定义一个入口配置文件
vim /etc/ansible/nginx_config/update.yml //内容如下:
---
- hosts: 127.0.0.1
user: root
roles:
- new
7. 执行nginx配置文件更新
ansible-playbook /etc/ansible/nginx_config/update.yml
PS:执行之前,一定要先把files目录下面未修改的配置文件先复制到/etc/ansible/nginx_config/roles/old/files目录下面。
二、恢复nginx配置文件并重新加载
1. 恢复其实也是更新,相当于把旧配置文件更新到目标机器上面
rsync -av /etc/ansible/nginx_config/roles/new/ /etc/ansible/nginx_config/roles/old/
2. 定义一个入口配置文件
vim /etc/ansible/nginx_config/rollback.yml //内容如下:
---
- hosts: 127.0.0.1
user: root
roles:
- old
PS: files目录下面的配置文件一定是未修改之前的,这样才能保证回滚生效。
playbook管理配置文件的更多相关文章
- Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件
一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...
- spring 学习(二):spring bean 管理--配置文件和注解混合使用
spring 学习(二)spring bean 管理--配置文件和注解混合使用 相似的,创建 maven 工程,配置pom.xml 文件,具体可以参考上一篇博文: sprint 学习(一) 然后我们在 ...
- 利用泛型和反射,管理配置文件,把Model转换成数据行,并把数据行转换成Model
利用泛型和反射,管理配置文件,把Model转换成数据行,并把数据行转换成Model 使用场景:网站配置项目,为了便于管理,网站有几个Model类来管理配置文件, 比如ConfigWebsiteMo ...
- Ansible 使用 Playbook 管理 Nginx 配置文件
前面我们已经安装完 Nginx,但是在日常维护中经常需要修改配置文件,并重新加载配置文件,因此来写一个管理 Nginx 配置文件的 Playbook: [root@localhost ~]$ mkdi ...
- .Net Core下如何管理配置文件
一.前言 根据该issues来看,System.Configuration在.net core中已经不存在了,那么取而代之的是由Microsoft.Extensions.Cnfiguration.XX ...
- .Net Core下如何管理配置文件(转载)
原文地址:http://www.cnblogs.com/yaozhenfa/p/5408009.html 一.前言 根据该issues来看,System.Configuration在.net core ...
- spring管理配置文件的工厂类--PropertiesFactoryBean
使用这个工厂的配置,可以很方便的获取配置文件中的属性.具体使用如下; 对于属性配置,一般采用的是键值对的形式,如: key=value 属性配置文件一般使用的是XXX.properties,当然有时候 ...
- vim利用插件管理工具-管理配置文件
目前被广泛应用的2各插件管理工具Pathogen和Vunble,我先说Pathogen Pathogen Pathogen完全用vim脚本编写,不用其他的代码(Vunble就用了python),所以安 ...
- ansible使用jinja2管理配置文件以及jinja2语法简介
一.Jinja2介绍 Jinja2是基于python的模板引擎,功能比较类似于PHP的smarty,J2ee的Freemarker和velocity.它能完全支持unicode,并具有集成的沙箱执行环 ...
随机推荐
- 初始Dubbo
1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...
- Fragment遇到的坑
Fragment不要通过构造传参,要么就是bundle,要么就通过activity临时存一下,不然debug编译没问题release编译不过
- centos6.6-6.8的cobbler的kickstarts文件
author:headsen chendate: 2018-07-10 19:14:39 1,普通的mbr版的kickstarts的配置文件: [root@cobbler-server ~]# cat ...
- 合并图片、EUI顺序、CacheAsBitmap对drawcall影响的测试
一 什么是DrawCall Draw Call 理解和优化: http://blog.csdn.net/sakyaer/article/details/44459881 draw call是openG ...
- Storm基础概念与单词统计示例
Storm基本概念 Storm是一个分布式的.可靠地.容错的数据流处理系统.Storm分布式计算结构称为Topology(拓扑)结构,顾名思义,与拓扑图十分类似.该拓扑图主要由数据流Stream.数据 ...
- [LintCode] 第一个错误的代码版本
/** * class VersionControl { * public: * static bool isBadVersion(int k); * } * you can use VersionC ...
- HQL的检索方式
HQL是面向持久化类的,所以需要查询表的字段都要用持久化类指定例如 String hql = "SELECT e.email, e.salary, e.dept FROM Employee ...
- freenas 11.2踩过的坑
修改SMB最小协议 服务器最小协议由FreeNAS上的sysctl控制. 在System-> Tunables 下添加sysctl来使其永久化:Variable = freenas.servic ...
- response.setContentType()的String参数及对应类型(转)
response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据. 例如web浏览器就是通过MI ...
- ondrag事件
ondragstart 事件在用户开始拖动元素或选择的文本时触发. 拖放是 HTML5 中非常常见的功能. 更多信息可以查看我们 HTML 教程中的 HTML5 拖放. 注意: 为了让元素可拖动,需要 ...