三、批量+自動化運維工具
這裏就比較多了,知名的有Puppet、Ansible、Chef、Saltstack這些。
這些在網上的資料也比較多,找比較新版本的官方文檔看就好了。python
Puppet和chef是比較早期的工具,受衆面也很大,不過這兩個工具基於ruby實現,如今要找到熟悉ruby的人來作這塊的二次開發可不容易。
而ansible和saltstack則相對新生代一些,目前用戶基數增加很快,基於python實現,要找作二次開發的人也相對容易的多。ios
四、集中日誌分析工具
在一個服務器比較多的環境下,如何集中的管理和分析、查詢日誌,已經變成一個比較強的需求了。
想象一下,若是發生了某個錯誤,你還得一臺臺機器去翻日誌文件,是否是很蛋疼。
在這個需求驅動下,就誕生了一些集中日誌分析工具。git
在開源領域,比較知名的就是ELK這一套工具了,涵蓋了日誌採集、上報、搜索、展示這一類基本需求,如今比較多的上規模的企業都用這個,網上資料也大把。
核心實現機制都是經過一些日誌採集代理(相似fiebean)去爬日誌文件,將最新的部分提交到採集服務端,後端再對接搜索引擎,能支持很快速、準確的搜索便可。github
有一個國內不怎麼知名的Sentry日誌收集服務,比較輕量級,自己是Python作的,與各類語言的日誌框架作了很是好的集成,能夠很方便的集中收集異常日誌,並分配給對應的開發人員。
它在github上有10000多個star了,這在DevOps相關的軟件裏,都是排名很是靠前的了。數據庫
五、持續集成/發佈工具
我接觸的人都是用jekins的,沒有用其餘的,可能跟我所在的技術圈子有關。後端
集成打包的過程其實通常都比較簡單,配好版本庫和打包腳本就行。
但發佈的過程就比較複雜,有些是全量發佈,但也有很是多的IT團隊採用增量發佈。
這個方面若是想用工具,仍是得先分析清楚現有的發佈流程,手工狀況下怎麼作,哪些能經過自動化工具來完成。安全
六、IaaS集成
最近兩年的公有云推廣比較迅速,不少新的服務器採購都被導入到雲上去了。
如今主流的公有云都提供了比較完備的API,基於這些API也能夠作一些針對基礎資源的自動化操做,好比遊戲行業的快速開服。ruby
DevOps這個概念說實話是比較大的,不僅是人們所理解的CI/CD。其實理解起來有幾個要素能夠歸納: 自服務、自動化以及持續反饋。我曾經/如今,或者我理解的DevOps實踐會包含如下一些內容:服務器
公有/私有云
將基礎設施託管到雲平臺(如AWS),不缺安全性的同時,管理上更加具備伸縮性和高可用性(大部分的知名雲平臺的可用性仍是比較值得信賴的),還能夠下降成本(彈性計算,按需獲取),實現自服務(獲取資源的週期大大縮短),減小自建服務的壓力。架構
自動化配置管理/容器化技術
基礎設施管理屬於DevOps裏面比較重頭的一項了。容器技術能夠用於管理各個服務,甚至實現微服務架構。而自動化配置管理則是用代碼反應基礎設施(「基礎設施即代碼」),好比使用諸如Chef、Puppet、Ansible這樣的工具實現基礎設施配置管理的自動化。自動化配置管理和容器的一個區別在於,前者用代碼封存基礎設施的基本配置信息,後者直接封存各個基礎設施的應用組件或者說服務,固然它們的應用場景也有差異。
自動化測試/部署
自動化測試和部署,其實主要是爲了持續集成/部署的流水線,讓咱們代碼的每一次提交均可以觸發一個成行的測試/部署。自動化測試可能不僅是單元測試級別的測試,可能還包含會模仿實際用戶動做的功能測試、迴歸測試,這時候你就會藉助一些BDD測試框架。固然,DevOps不必定要實際編寫這些測試,但必定會參與管理這些測試。
持續集成/部署
藉助Jenkins、Go.cd等等這樣的持續集成工具,搭建本身的流水線。這樣的好處就再也不一一贅述。
持續的監控和日誌體系
搭建一個持續可靠的監控/日誌體系,就是一個反饋和持續檢查的機制.
知乎話題:你所在的公司是如何實施DevOps的?