ansible实战与配置 Ⅱ

playbook管理配置文件(总结)

- 将我们把一个服务部署到客户机上后(以nginx为例),我们经常需要更改一个配置文件,配置文件改好后我们还需要加载nginx的服务,这时就用到了管理配置文件,有时也会出现这样一个场景当我们更改了一个配置文件,发现改错了,需要回滚到之前的配置,并且对回滚的配置进行加载,这样我们应该怎么实现呢?也可以用playbook实现

- 如下是操作:

基本的目录创建与介绍

[[email protected] nginx_install]# mkdir  -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks}
其中new为更新时用到的,old为回滚时用到的,files下面为nginx.conf和vhosts目录,handlers为重启nginx服务的命令
[[email protected] ansible]# cd nginx_config/
[[email protected] nginx_config]# ls roles/
new  old
关于回滚,需要在执行playbook之前先备份一下旧的配置,所以对于老配置文件的管理一定要严格,千万不能随便去修改线上机器的配置,并且要保证new/files下面的配置和线上的配置一致

先把nginx.conf和vhosts目录放到files目录下面

[[email protected] conf]# cp -r nginx.conf vhost/ /etc/ansible/nginx_config/roles/new/files/

定义变量

[[email protected] conf]# vim /etc/ansible/nginx_config/roles/new/vars/main.yml 
nginx_basedir: /usr/local/nginx

定义重新加载nginx服务

[[email protected] conf]# vim /etc/ansible/nginx_config/roles/new/handlers/main.yml  
[[email protected] conf]# vim /etc/ansible/nginx_config/roles/new/handlers/main.yml  
- name: restart nginx
  shell: /etc/init.d/nginx reload

定义需要cp的目录(核心任务)

[[email protected] conf]# vim /etc/ansible/nginx_config/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 }
    - { src=\‘#\‘" / }
  notify: restart nginx

最后定义总入口配置

[[email protected] conf]# vim /etc/ansible/nginx_config/update.yml 
---
- hosts: chy02
  user: root
  roles:
  - new
[[email protected] conf]# ansible-playbook /etc/ansible/nginx_config/update.yml
[[email protected] conf]# ansible-playbook /etc/ansible/nginx_config/update.yml

PLAY [chy02] *********************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************
ok: [chy02]

TASK [new : copy conf file] ******************************************************************************************************
ok: [chy02] => (item={u‘dest‘: u‘conf/nginx.conf‘, u‘src‘: u‘nginx.conf‘})
ok: [chy02] => (item={u‘dest‘: u‘conf/‘, u‘src‘: u‘vhost‘})

PLAY RECAP ***********************************************************************************************************************
chy02                      : ok=2    changed=0    unreachable=0    failed=0   
//执行成功

现在进行变更的一个测试

[[email protected] files]# tail -2 nginx.conf 
#   include vhost/*.conf;
  }
(更改一下nginx的配置文件)
[[email protected] ~]# tail -2 /usr/local/nginx/conf/nginx.conf
#   include vhost/*.conf;
  }
(在客户机上查看配置文件的include这行也是被注释的)

现在进行回滚操做

[[email protected] files]# rsync -av  /etc/ansible/nginx_config/roles/new/ /etc/ansible/nginx_config/roles/old/
sending incremental file list
files/
files/nginx.conf
files/vhost/
files/vhost/aaa.conf
files/vhost/ld.conf
files/vhost/proxy.conf
files/vhost/ssl.conf
files/vhost/test.com.conf
handlers/
handlers/main.yml
tasks/
tasks/main.yml
vars/
vars/main.yml

sent 5141 bytes  received 203 bytes  10688.00 bytes/sec
total size is 4430  speedup is 0.83
回滚操作就是把旧的配置覆盖,然后重新加载nginx服务, 每次改动nginx配置文件之前先备份到old里,对应目录为/etc/ansible/nginx_config/roles/old/files 
[[email protected] files]#  vim /etc/ansible/nginx_config/rollback.yml //最后是定义总入口配置
---
- hosts: chy02
  user: root
  roles:
  - old 
需要注意一点是在操作时必须要进行将你要操作的配置文件cp到old下才可以进行回滚,如果没有cp是不能进行回滚的)

希望看过的童鞋多多指教,谢谢!

时间: 2024-08-30 17:38:51

ansible实战与配置 Ⅱ的相关文章

ansible实战与配置

1 用playbook安装nginx - 思路:先在一台机器上编译安装好nginx.打包,然后再用ansible去下发 先在服务端编译nginx(服务端为chy01 192.168.212.11 客户机为chy02 192.168.212.12) [[email protected] ~]# cd /etc/ansible/ [[email protected] ansible]# mkdir nginx_install //先创建一个nginx的安装目录 [[email protected] 

自动化运维工具Ansible实战(三)常用的配置和相关命令

Ansible默认安装好后有一个配置文件/etc/ansible/ansible.cfg,该配置文件中定义了ansible的主机的默认配置部分,如默认是否需要输入密码.是否开启sudo认证.action_plugins插件的位置.hosts主机组的位置.是否开启log功能.默认端口.key文件位置等等. 具体如下:     [defaults]     # some basic default values...     #inventory      = /etc/ansible/hosts

ansible的playbook配置及template模板的使用

前言: 学习下ansible的playbooks的状态配置管理,说来puppet saltstack都有类似的叫法,只是ansible的叫法更犀利,我当时一看playbook还以为是花花公子的playboy.要使用ansible就要深入学习playbook配置及模板. 注:到底是playbook还是playbooks.... 先把官网的简单几个语法给说明下. #这个是你选择的主机 - hosts: webservers #这个是变量   vars:     http_port: 80     m

LNMP架构应用实战——Nginx配置虚拟主机

LNMP架构应用实战--Nginx配置虚拟主机        前面介绍了nginx服务的安装与配置文件,今天介绍下它的另一种实用配置--"虚拟主机",每个虚拟主机可以是一个独立的网站,可以具有独立的域名,同一台服务器上的不同的虚拟主机之间是独立的,用户访问不同虚拟主机如同访问不同的服务器一样,因此它不需要为一个单独的WEB站点提供单独一个nginx服务器和一个单独的nginx进程 1.nginx虚拟主机简单介绍 同apache服务一样,它也有三种不同的虚拟主机,基于域名的虚拟主机.基于

ansible安装以及配置优化和实现动态inventory

系统环境 # uname -a     Linux puppetserver25 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux # cat /etc/issue Red Hat Enterprise Linux Server release 6.5 (Santiago) Kernel \r on an \m # python -V Python 2.6.6 所需要的

实战:配置rsync+inotify实现实时同步备份

实战:配置rsync+inotify实现实时同步 Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等.利用这一机制,可以非常方便地实现文件异动告警.增量备份,并针对目录或文件的变化及时作出响应. 使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性.周期过密等问题. inotify

实战安装配置wamp(lamp)服务器环境apache2.2.25+mysql5.6+php5.4------安装Apache服务器

实战安装配置wamp(lamp)服务器环境apache2.2.25+mysql5.6+php5.4 系列 (一) -------安装Apache服务器 安装wamp环境的第一步是安装Apache服务器.下面开始安装步骤图文并茂. 一.双击安装包点“next”进行下一步,然后同意协议(这张图没有截): 二.填写服务器的信息,可以随便填写,我填写的内容如下,然后点击"next": 三.接下来选择安装方式: 选择custom 意思是自己手动配置服务器安装位置以及安装内容,我们选择“custo

自动化运维工具Ansible实战(一)简介和部署

一.Ansible的介绍 Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点.实现了批量系统配置.批量程序部署.批量运行命令等功能.Ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架. 1.Ansible框架 连接插件connection plugins:负责和被监控端实现通信: host inventory:

ansible实战--批量自动安装与删除zabbix agentd

想必做网站运维的,对目前主流的开源监控组件zabbix应该不陌生.它功能是很强悍,但是被监控的客户端安装agentd是一件很吃力且费时的工作.如果你管理的server数量不多还好,大不了手工1台1台的安装.相反你管理的server数量很多,不采取自动化,真的会让人做梦都会想到安装zabbix agentd. 本次实战ansible批量自动安装与卸载zabbix agentd,版本zabbix-2.0.14+centos6.4+ansible1.8.1 下面就开始吧 1.安装配置ansible工具