ansible全面介紹及運維工程師日常工作解析
運維自動化發(fā)展歷程及技術(shù)應用
- 本地部署
(on-permises)
自己買硬件服務(wù)器,自己部署系統(tǒng),開發(fā)應用程序 - 基礎(chǔ)設(shè)施即服務(wù)
(laas---infrastructure as a server)
硬件通過購買的方式(阿里云/AWS/騰訊云),提供基本硬件架構(gòu),有了硬件后自己只需要按需求部署系統(tǒng)/軟件應用即可 - 平臺即服務(wù)
(paas---Platform as a service)
通過購買(阿里云/騰訊云/AWS等)云服務(wù),在購買的時候會把系統(tǒng)環(huán)境一并做好,只需要在服務(wù)器上做應用開發(fā)就可 - 軟件即服務(wù)
(saas---software as a service)
從硬件到操作系統(tǒng)再到應用開發(fā)全部一站式購買,只需要付錢購買就行,(有的帶有WEB頁面,直接交互式按需求部署即可)
例如:淘寶,不需要自己買服務(wù)器開發(fā)網(wǎng)站應用,只需要交錢給淘寶然后在淘寶上創(chuàng)建頁面即可,省去的購買服務(wù)器,找人開發(fā)頁面的過程
后面的英文單詞及概念要記住!
自動化運維應用場景
- 文件傳輸
- 命令執(zhí)行
- 應用部署
- 配置管理
- 任務(wù)流編排
企業(yè)實際應用場景分析
- Dev開發(fā)環(huán)境
使用者: 程序員
功能: 程序員開發(fā)軟件,測試BUG的環(huán)境
管理人員: 程序員
一般是由程序員自行管理,運維不要接收
- 測試環(huán)境
使用者: QA測試工程師
功能: 測試經(jīng)過Dev環(huán)境測試通過的軟件的功能
管理人員: 運維
說明:
測試環(huán)境往往有很多套(IOS平臺/安卓平臺),測試環(huán)境滿足測試功能即可,不宜過多
(1)測試人員希望測試環(huán)境有多套,公司的產(chǎn)品多產(chǎn)品線并發(fā),雞即多個版本意味著多個版本同步測試
(2)通過測試環(huán)境有多少套和產(chǎn)品線數(shù)量保持一樣
發(fā)布環(huán)境
代碼發(fā)布機,有些公司為堡壘機
(安全屏障)
使用者: 運維
功能: 發(fā)布代碼到生產(chǎn)環(huán)境
管理人員: 運維(需要有經(jīng)驗的)
發(fā)布機: 往往需要2臺(主備)生產(chǎn)環(huán)境
使用者: 運維,少數(shù)情況開放權(quán)限給核心開發(fā)人員,極少數(shù)公司將權(quán)限完全開放給開發(fā)人員并其維護,(不要隨便給其他人權(quán)限,出問題后需要承擔責任!)
功能: 對用戶提供公司產(chǎn)品的服務(wù)
管理人員: 只能是運維
生產(chǎn)環(huán)境服務(wù)器數(shù)量: 一般比較多,且應用非常重要.往往需要自動工具協(xié)助部署配置應用灰度環(huán)境
生產(chǎn)環(huán)境的一部分
使用者: 運維
功能: 在全量發(fā)布代碼前將代碼的功能面向少量精準用戶發(fā)布的環(huán)境,可基于主機或用戶執(zhí)行灰度發(fā)布
案例:
- 基于主機發(fā)布
共100臺生產(chǎn)服務(wù)器,先發(fā)布其中10臺服務(wù)器,
這10臺服務(wù)器
就是灰度服務(wù)器
,有問題的話也是這10臺上的用戶受到影響,遇到問題立馬解決
- 基于用戶發(fā)布
比如利用會員機制或者一部分用戶(優(yōu)先嘗鮮使用新版本),這部分人優(yōu)先使用新版本,如果沒問題后在進行全面升級版本
- 基于地區(qū)發(fā)布
比如有些軟件只能某個地區(qū)使用的,一個地區(qū)一個地區(qū)的逐漸升級版本
管理人員: 運維
灰度環(huán)境: 往往該版本功能變更較大,為保險起見特意先讓一部分用戶優(yōu)化體驗該功能,待這部分用戶使用沒有重大問題的時候,再全量發(fā)布至所有服務(wù)器.
- 程序發(fā)布
預發(fā)布驗證
新版本的代碼先發(fā)布到服務(wù)器(跟線上環(huán)境配置完全相同,知識未接入到調(diào)度器),放到測試服務(wù)器上線測試(不對外發(fā)布使用)程序發(fā)布
不能導致系統(tǒng)故障或造成系統(tǒng)完全不可用
不能影響用戶體驗
(類似于飛機空中加油!
ヾ(?°?°?)??)灰度發(fā)布
發(fā)布路徑
例如:
/webapp/zhanshen-1.1 #用這個版本就生成一個/webapp/zhanshen軟連接
/webapp/zhanshen #這是一個軟連接,用戶訪問次目錄,
/webapp/zhanshen-1.2 #用這個版本就把1.1版本刪除后再生成一個/webapp/zhanshen軟連接
- 發(fā)布過程
在調(diào)度器上下線一批主機(標記為maintanance狀態(tài))--> 關(guān)閉服務(wù) --> 部署新版本的應用程序 --> 啟動服務(wù) --> 在調(diào)度器上啟用這一批服務(wù)器 - 自動化灰度發(fā)布
自動化腳本/自動化運維發(fā)布平臺來代替上面提到的復雜的發(fā)布過程
常用自動化運維工具
- ansible:語言開發(fā):Python-->
agentless(無客戶端/無代理)
-->中小型環(huán)境 - saltstack:語言開發(fā):Python-->一般需部署
agent(客戶端)
,執(zhí)行效率更高 - puppet:語言開發(fā):ruby-->功能強大,配置復雜,重型,適合大型環(huán)境
- fabric:語言開發(fā):python-->
agentless
- chef:語言開發(fā):ruby-->國內(nèi)應用很少
- cfengine
- func
解釋說明:
主控端:
被控端:代理(安裝agent客戶端/代理程序), 無代理(利用SSH服務(wù))
(1)agentless(無客戶端/無代理)
同時因為SSH是每臺Linux主機系統(tǒng)必裝的軟件泌霍,所以Ansible無需在遠程主機端安裝任何額外進程儒搭,即可實現(xiàn)Agentless(無客戶端)梭域,進而助力其實現(xiàn)去中心化的思想,基于ssh性能也會略低一些,適合中小環(huán)境
(1.1)ansible也支持agent的方式袭景,即所謂的“pull”
的模式浙滤,就是通過一個客戶端去拉取
要執(zhí)行的任務(wù)(2)
agent(客戶端)
saltstack必須在客戶端安裝代理才可以控制被控端,雖然部署agent會麻煩,但是功能上也會更強大一些,性能也會高很多,適合大型環(huán)境
ansible發(fā)展史
- ansible
- 創(chuàng)始人,
michael DeHaan
(cobbler與func的作者) - 2012-03-09,發(fā)布0.0.1版本,被紅帽收購
- 2015-10-17,Redhat宣布收購
ansible軟件介紹
(1)Ansible是一個部署一群遠程主機的工具
。這里“遠程主機(Remote Host)”是指任何可以通過SSH登錄
的主機,所以它既可以是遠程虛擬機或物理機,也可以是本地主機沥寥。
Ansible通過SSH協(xié)議實現(xiàn)管理節(jié)點與遠程節(jié)點之間的通信
。理論上來說柠座,只要能通過SSH登錄到遠程主機來完成的操作邑雅,都可以通過Ansible實現(xiàn)批量自動化操作。
(2)涉及命令管理操作:復制文件妈经,安裝服務(wù)淮野,啟動管理服務(wù)等等.
(3)利用ssh方式和ansible的區(qū)別
ssh秘鑰+腳本 簡單實用,看起來比較LOW吹泡,需要人工寫腳本
骤星,類似inotify。
ansible有配置文件
爆哑,可以多線程
直接實現(xiàn)洞难。不需要寫腳本,類似sersync揭朝。