ansible實現發布、回滾功能


ansible的兩篇博客,本來是打算合二為一的,發現只用一篇寫,嗯,好鬼長。。。。 一向秉承簡單為美的我於是忍痛割愛,一分為二了

 

ansible實現升級發布、回滾功能

1、應用場景

在實際生產環境中,每天都會更改很多次配置文件,要批量地重啟服務 , how ???

機器少可以手動改,再reload一下

機器多達數百台  ——》 使用自動化工具,效率高唄
 
2、思路
配置文件放到一個固定的地方,每次更改時(直接在當前機器上更改),改完后批量發布到其他機器上,再reload
 
 
一、做一個配置文件的playbook
(i)准備工作
1、cd /etc/ansible;  mkdir nginx_config   ——》 這樣就有 nginx_install 和 nginx_config 目錄了
2、cd nginx_config;  mkdir roles
3、cd roles
mkdir old new
說明:
new:發布/升級
old:回滾
做回滾操作是因為: 重啟或者reload的時候,服務沒有起來,或者沒有達到預想的結果
 
 
(ii)完成發布/升級功能
1、cd new/
mkdir vars files tasks handlers
說明:handlers是用來重啟服務的
 
2、復制nginx的主配置文件和虛擬主機配置文件
(1)cp /usr/local/nginx/conf/nginx.conf  files/
(2)cp -r  /usr/local/nginx/conf/vhosts   files/
 
3、定義變量 ——》 basedir
vim vars/main.yml
 
4、定義handlers  ——》 重新加載nginx服務
vim handlers/main.yml

 

5、定義核心任務

vim tasks/main.yml

 

 6、定義總的入口文件 ——》 主機,用戶,roles
(1)cd/etc/ansible/nginx_config
(2)vim update.yml

 

 7、模擬測試
(1)修改配置文件 ——》 注釋是因為直接運行是非法的
vim roles/new/files/vhosts/1.conf

 

(2)生效條件:主配置文件打開

include vhosts/*.conf;

(3)執行 ——》 已准備好升級發布

ansible-playbook update.yml  ——》 在 nginx_conf 下執行該命令

 

 (4)測試1 ——》 純啟動
web3:
(a)cat /usr/local/nginx/conf/vhosts/1.conf
(b)ps aux |grep nginx

(5)測試2 ——》 測restart

 web1:
(a)vim roles/new/files/vhosts/1.conf

 

(b)ansible-playbook update.yml

 

(c)web3: cat /usr/local/nginx/conf/vhosts/1.conf

 

 

#######################################

(iii)完成回滾功能

web1 做備份

1、cd /etc/ansible/nginx_config/roles

2、rsync -av  new/  old/

3、rsync -av  new/files/   old/files/

目的:更改 new/files 文件前,先拷貝到 old/files 

回滾的時候,就是把 old/files/ 里面的配置再發布一次

舊的還原過來,再重新加載或重啟服務

 

4、進入 nginx_config 目錄下

(1)cp update.yml backup.yml

(2)vim backup.yml

 

 

5、測試

(1)編輯 roles/new/files/vhosts/1.conf

再加多一行

 

(2)發布

ansible-playbook update.yml

說明:修改完后nginx重啟了

但發現線上服務沒有生效,或者出現異常

需要把之前old/files下的配置文件覆蓋一下,實現回滾

 

 (3)做回滾前,先驗明下(剛剛發布時做的)

 

 (4)回滾來了

ansible-playbook backup.yml

 

(5)web3現在看只有未發布前的2行,而不是3行了

cat /usr/local/nginx/conf/vhosts/1.conf

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM