关于回滚,需要在执行playbook之前备份一下旧的配置,所以对于老配置文件的管理一定要严格,千万不要随便去修改线上机器的配置,并且要保证new/files下面的配置和线上的配置一致
先把nginx.conf和vhosts目录放到files目录下面
cd /usr/local/nginx/conf/
cp -r nginx.conf vhosts /etc/ansible/nginx_config/roles/new/files
详细步骤:
1.级联创建所需要的目录:
mkdir -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks}
2.将Nginx的配置文件拷贝到指定目录:
cp /usr/local/nginx/conf/nginx.conf /etc/ansible/nginx_config/roles/new/files/
cp -r /usr/local/nginx/conf/vhosts /etc/ansible/nginx_config/roles/new/files/
3.定义vars:
vim /etc/ansible/nginx_config/roles/new/vars/main.yml
nginx_basedir: /usr/local/nginx
4.定义handlers:
vim /etc/ansible/nginx_config/roles/new/handlers/main.yml
- name: restart nginx
shell: /etc/init.d/nginx reload
5.定义tasks:
vim /etc/ansible/nginx_config/roles/new/tasks/main.yml
- name: copy conf file
copy: src=https://www.linuxidc.com/Linux/2017-03/{{ item.src }} dest=https://www.linuxidc.com/Linux/2017-03/{{ 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.定义一个update程序的入口文件:
vim /etc/ansible/nginx_config/update.yml
---
- hosts: 192.168.147.138
user: root
roles:
- new
7.执行更新:ansible-playbook /etc/ansible/nginx_config/update.yml
上面实现了更新,即在服务端修改配置文件,执行playbook即可同步到客户端。
回滚的实现更简单:在每次更新之前,先将new/目录下的配置文件备份到old/目录下,定义一个rollback程序的入口文件:
vim /etc/ansible/nginx_config/rollback.yml
---
- hosts: 192.168.147.138
user: root
roles:
- old
如果更新失败,可以执行回滚:ansible-playbook /etc/ansible/nginx_config/rollback.yml
ansible样例库:
git clone git://github.com/dl528888/ansible-examples.git
git命令需要yum安装一下:yum install -y git
下面关于Ansible的文章您也可能喜欢,不妨参考下: