ansible實踐4- 管理配置文件
阿新 • • 發佈:2017-08-22
ini 重啟nginx etc div 軟件包 nbsp cal Owner 關於 生產環境中大多時候是需要管理配置文件的,安裝軟件包只是在初始化環境的時候用一下。下面我們來寫個管理nginx配置文件的playbook
mkdir -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks}
其中new為更新時用到的,old為回滾時用到的,files下面為nginx.conf和vhosts目錄,handlers為重啟nginx服務的命令
關於回滾,需要在執行playbook之前先備份一下舊的配置,所以對於老配置文件的管理一定要嚴格,千萬不能隨便去修改線上機器的配置,並且要保證new/files下面的配置和線上的配置一致
先把nginx.conf和vhosts目錄放到files目錄下面
cd /usr/local/nginx/conf/
cp -r nginx.conf vhosts /etc/ansible/nginx_conf/roles/new/files/
vim /etc/ansible/nginx_config/roles/new/vars/main.yml //定義變量
nginx_basedir: /usr/local/nginx
vim /etc/ansible/nginx_config/roles/new/handlers/main.yml //定義重新加載nginx服務
- name: restart nginx
shell: /etc/init.d/nginx reload
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, dest: conf/nginx.conf }
- { src: vhosts, dest: conf/ }
notify: restart nginx
vim /etc/ansible/nginx_config/update.yml // 最後是定義總入口配置
---
- hosts: testhost
user: root
roles:
- new
執行: ansible-playbook /etc/ansible/nginx_config/update.yml
而回滾的backup.yml對應的roles為old
rsync -av /etc/ansible/nginx_config/roles/new/ /etc/ansible/nginx_config/roles/old/
回滾操作就是把舊的配置覆蓋,然後重新加載nginx服務
ansible實踐4- 管理配置文件