一.Puppet?
轉載https://baike.baidu.com/item/puppet/5109503?fr=aladdin
puppet是一種Linux、Unix、windows平臺的集中配置管理系統,使用自有的puppet描述語言,可管理配置文件、用戶、cron任務、軟件包、系統服務等。puppet把這些系統實體稱之為資源,puppet的設計目標是簡化對這些資源的管理以及妥善處理資源間的依賴關系。
puppet采用C/S星狀的結構,所有的客戶端和一個或幾個服務器交互。每個客戶端周期的(默認半個小時)向服務器發送請求,獲得其最新的配置信息,保證和該配置信息同步。每個puppet客戶端每半小時(可以設置)連接一次服務器端, 下載最新的配置文件,并且嚴格按照配置文件來配置客戶端. 配置完成以后,puppet客戶端可以反饋給服務器端一個消息. 如果出錯,也會給服務器端反饋一個消息。
利用Puppet來給客戶端自動生成在服務端定義好的文件。
由master端向多個Client端分發文件。
二.Ducter
轉載http://www.ducter.net/
Ducter是面向設備、產品的分布式命令平臺,為第三方提供針對設備與產品的信息收集或操控的命令通道。作為國內已在多個公司投入使用的一款開源產品運維管理系統。 Ducter是產品的管理平臺,實現任意產品的管理、監控及用戶自定義的發布與回退,為第三方提供產品運行狀況的實時數據及事件通知。Ducter是集設備管理、產品管理、服務上線和服務器操作等于一體的運維管理系統。該系統分為Dcuter-Server/Ducter-Web兩個部分。
Ducter目標:
????產品管理系統
????產品->服務->服務池(服務池屬性)->服務池設備->設備。
????產品自動發布系統
????可視化、自定義、并發、自動。
????適用于任意產品類型:c/c++、python、java、php等。
????產品操控系統
????遠程操作產品服務的啟動、停止、重啟等。
????產品運行及使用資源的實時信息收集與通知系統。
????實時收集產品的運作狀態及資源占用信息。在狀態改變的時會主動實時事件通知。
????分布式命令平臺。
????命令的action由用戶腳本實現:shell、python、ruby等。
ducter提供腳本運行的環境。
運維定位:
與其他系統關系
與puppet、cfengine等配置系統關系:
????puppet、cfengine:面向配置
????ducter:面向交互,可與puppet等集成。
與Mesos的關系:
????Mesos:資源管理、調度平臺。
????Ducter:分布式任務與命令平臺,服務管理平臺,資源及服務調度有第三方實現。
三.Cfengine?
轉載https://baike.baidu.com/item/Cfengine/1718297?fr=aladdin
cfengine(配置引擎)是一種 UNIX 管理工具,其目的是使簡單的管理的任務自動化,使困難的任務變得較容易。Cfengine 適用于管理各種環境,從一臺主機到上萬臺主機的機群均可使用。到2.2 版本為止,我們現在所知的用于一般性管理的最大安裝機群約為20,000 臺。
Cfengine 可從很多方面對系統配置和維護進行管理,包括以下幾點:
??完成后期安裝任務,例如配置網絡界面信息。
??編輯系統配置文件以及其它文件。
??建立信號連接。
??檢驗、更正文件許可及所有權。
??刪除無用文件。
??壓縮被選文件。
??在網絡中分發文件。
??自動掛載NFS文件系統。
??檢查重要文件和文件系統是否存在及其完整性。
??執行命令及腳本。
??應用安全相關的補丁以及相似系統的修正。
??管理系統服務器進程。
目的:在于執行基于策略的配置管理。從實際的應用角度來講,這意味著Cfengine 可以最大限度的簡化系統配置及維護任務。
例子:要優化一個特定系統,用戶不再需要使用Perl 或其他用戶習慣的shell 來編譯一個程序來執行每項要求,取而代之的是,用戶可以通過寫一個更加簡單的策略來描述用戶希望自己的主機如何被配置。Cfengine 軟件可根據這些描述來決定哪些執行方式和/或補救方法是需要被完成的。這些策略描述也可以用于確保系統的配置能如系統管理員所希望的一樣被保持下來。
四.Func ?
轉載:https://www.cnblogs.com/MacoLee/p/5776869.html
Func?,目的是為了解決這一系列統一管理監控問題而設計開發的系統管理基礎框架。能有效的簡化多服務器系統管理工作的工具,易于學習,易于使用,易于擴展,而且功能強大。
Func的特點有:
1、Func可以在主控機上一次管理任意多臺或任意多個服務器組。
2、Func基于Certmaster(https://fedorahosted.org/certmaster/)建立了Master-Slaves主從SSL證書管控體系,可以將證書自動分發到所有受控服務器。
3、Func命令行可以直接發送遠程命令或者遠程獲取數據。
4、Func 開發者已經完成了大多數常用任務模塊的開發,包括命令執行模塊、文件傳輸模塊、IPtables模塊、查看硬件信息模塊、Mount模塊、進程模塊、服務模塊、重啟系統模塊等。
5、可以通過Func提供的Python API輕松編寫擴展模塊,以實現具體功能擴展。而且任何Func命令行能完成的工作,都能通過API編程實現。
6、Func通訊基于XMLRPC和SSL標準協議。
五、ansible
轉載http://blog.51cto.com/sofar/1579894
1、簡介
ansible是新出現的自動化運維工具,基于Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:
(1)、連接插件connection plugins:負責和被監控端實現通信;
(2)、host inventory:指定操作的主機,是一個配置文件里面定義監控的主機;
(3)、各種模塊核心模塊、command模塊、自定義模塊;
(4)、借助于插件完成記錄日志郵件等功能;
(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。
2、總體架構
?
Ansible由5 個部分組成:
????Ansible:核心
????Modules:包括 Ansible 自帶的核心模塊及自定義模塊?
????Plugins:完成模塊功能的補充,包括連接插件、郵件插件等?
????Playbooks:劇本,定義 Ansible 多任務配置文件,由Ansible自動執行
????Inventory:定義 Ansible 管理主機的清單
3、特性
(1)、no agents:不需要在被管控主機上安裝任何客戶端;
(2)、no server:無服務器端,使用時直接運行命令即可;
(3)、modules in any languages:基于模塊工作,可使用任意語言開發模塊;
(4)、yaml,not code:使用yaml語言定制劇本playbook;
(5)、ssh by default:基于SSH工作;
(6)、strong multi-tier solution:可實現多級指揮。
4、優點
(1)、輕量級,無需在客戶端安裝agent,更新時,只需在操作機上進行一次更新即可;
(2)、批量任務執行可以寫成腳本,而且不用分發到遠程就可以執行;
(3)、使用python編寫,維護更簡單,ruby語法過于復雜;
(4)、支持sudo。
5、任務執行流程
六.CheungSSH
轉載:https://www.cnblogs.com/cheungssh/p/5025854.html
CheungSSH自動化運維工具,批量管理Linux服務器,自動監控服務器,自動部署Tomcat,Apache軟件,管理GitHub,批量執行命令,傳送文件,全自動化過程。計劃任務功能,權限的審計,權限的控制,和操作記錄。
功能介紹:
?
運行架構:
七.開放的運維管理系統?OSA
轉載:http://www.osapub.com/index.html
OSA開源運維監管理平臺是由OSA開發團隊,針對目前服務器運維、監控和報警提出的一個開源、 易用、實用的跨平臺服務器運維管理平臺;OSA運維管理平臺除了滿足運維需求,還引導用戶進行知識管理,流程規范,日常學習等。
主要功能:資源監控,獨創的即時監控,智能分析服務器進程的內存和CPU占用率等信息。
郵件報警:靈活的報警設置,以郵件的方式進行服務異常、設備宕機等告警通知。
單機運維:簡單操作即可進行服務器的日常維護與管理,支持通過智能手機進行登錄和管理。
批量操作: 批量操作結合計劃任務功能,讓操作更加自動化,一鍵部署成千上萬臺服務器。
故障記錄:強大的故障記錄與分類功能,根據歷史記錄很好的分析突發故障。
知識庫: 豐富的知識庫內容,幫助您解決問題,尋找日常運維中的問題的答案。
運營分析: 用圖形的方式分析服務器,讓運營人員對基礎設備狀態信息了如指掌。
賬戶管理: 通過合理的權限分配,為不同用戶設定不同角色,方便靈活管理。
注:最后更新時間2012年09月10日
八.國產開源運維管理工具介紹TriAquae
轉載:https://blog.csdn.net/enweitech/article/details/48177835
IT批量運維管理軟件-- TriAquae ?
1.服務器分組管理
2.批量命令執行
3.批量文件傳送、接收
4.服務器運行狀態抓取、分析
5.服務器硬件信息收集
6.定時計劃任務
7.批量軟件部署
8.系統密碼更改
理由:方便,你可以像管理本地一臺服務器一樣可以輕松的讓成千上萬臺服務器做同樣的事情,比如?uname –a查一下系統版本,執行一個收集日志的腳本,修改所有服務器上的一個文件……,當然它能做的不至這些……;它如此之輕,只要你的機器上裝有Python,那么你就可以開始使用它,它不需要你裝數據庫,不需PHP、不需要JAVA虛擬機,only??Python。你甚至不需要在客戶機上裝客戶端,只需要支持SSH,當然你得知道用戶名密碼;是開源的,免費的……
九.SaltStack?
轉載:http://www.360doc.com/content/16/0705/10/11991_573220489.shtml ;http://blog.51cto.com/lwm666/2068833
1、介紹
SaltStack是一個服務器基礎架構集中化管理平臺,具備配置管理、遠程執行、監控等功能,一般可以理解為簡化版的puppet和加強版的func。SaltStack基于Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建,而且使用RAS Key方式確認身份,傳輸采用AES加密,安全性能更高。
通過部署SaltStack環境,我們可以在成千上萬臺服務器上做到批量執行命令,根據不同業務特性進行配置集中化管理、分發文件、采集服務器數據、操作系統基礎及軟件包管理等,SaltStack是運維人員提高工作效率、規范業務配置與操作的利器。
2、自動化工具對比
1)Puppet
?優點:老牌經典自動化配置軟件、應用廣泛、功能強大?
?缺點:不能批處理,使用Ruby和DSL語言開發,沒有相關技術棧的公司維護和二次開發起來比較很難,門檻比較高;缺少錯誤檢查和報告;最致命的是Puppet的執行是無序執行,對于一些配置或者部署有先后順序的項目比較難以處理
?2)Chef
?優點:功能也比較強大(資料比較少)
?缺點:官方文檔說明比較模糊淺顯;執行并非push實時執行,而是client端定時獲取server端數據
?3)Ansible
?優點:社區年輕有活力,play-book使用yaml,簡潔,不需要客戶端client支持
?缺點:使用SSH管理配置,理論上慢于Saltstack,對于不苛求執行效率,Ansible也是一個不錯的選擇
?4)Saltstack
?優點:功能不僅限于配置管理、使用Python開發、Grain/Pillar支持、自定義moudles
?缺點:社區相對比較年輕,文檔資料較少(其實官方文檔已經講解得很深入了...)
3、Saltstack的三種運行方式
· ?Local
· ?Master/Minion
· ?Salt SSH
Saltstack最傳統的運行方式還是C/S模式,需要在被管理節點上安裝Minion客戶端;其實Saltstack也支持SSH方式,無需安裝Agent,通過SSH實現管理
4、特性
(1)、部署簡單、方便;
(2)、支持大部分UNIX/Linux及Windows環境;
(3)、主從集中化管理;
(4)、配置簡單、功能強大、擴展性強;
(5)、主控端(master)和被控端(minion)基于證書認證,安全可靠;
(6)、支持API及自定義模塊,可通過Python輕松擴展。
?
5、Saltstack目前最主要的三大主要功能
· ?遠程執行
· ?配置管理
· ?云管理
6、SaltStack 的工作原理
SaltStack 采用 C/S 結構來對云環境內的服務器操作管理及配置管理。SaltStack 客戶端(Minion)在啟動時,會自動生成一套密鑰,包含私鑰和公鑰。之后將公鑰發送給服務器端,服務器端驗證并接受公鑰,以此來建立可靠且加密的通信連接。同時通過消息隊列 ZeroMQ 在客戶端與服務端之間建立消息發布連接。?
專業術語說明:
Minion 是 SaltStack 需要管理的客戶端安裝組件,會主動去連接 Master 端,并從 Master 端得到資源狀態信息,同步資源管理信息。
Master 作為控制中心運行在主機服務器上,負責 Salt 命令運行和資源狀態的管理。
ZeroMQ 是一款開源的消息隊列軟件,用于在 Minion 端與 Master 端建立系統通信橋梁。
Daemon 是運行于每一個成員內的守護進程,承擔著發布消息及通信端口監聽的功能。
?
SaltStack 通信原理圖
???????
操作執行原理圖
原理圖說明:
Minion 是 SaltStack 需要管理的客戶端安裝組件,會主動去連接 Master 端,并從 Master 端得到資源狀態信息,同步資源管理信息。
Master 作為控制中心運行在主機服務器上,負責 Salt 命令運行和資源狀態的管理。
Master 上執行某條指令通過隊列下發到各個 Minions 去執行,并返回結果。
??SaltStack 部署架構圖
?
十.shipit-deploy
轉載:https://cnodejs.org/topic/584545bd4c17b38d354363af
目標:一鍵部署多臺服務器;一鍵回滾多臺服務器;本地操作,不需要登錄服務器;方便定制擴展,實現全自動化流程。
為什么shipit可以做到不用登陸就可以操作遠程服務器呢?
這是因為它使用的是ssh命令操作遠程服務器,不了解的同學可以在終端敲個命令感受一下:sshuser@remote_host?“pwd; ls”。
為什么可以一鍵部署到多臺機器呢?
簡單來講,配置中的每個server都會對應創建一個對象,每執行一個遠程命令,會遍歷所有的對象去執行。
定制擴展:代碼已經上傳到服務器了,接下來就是要啟動項目了,比如我們用pm2來啟動,啟動前還需要執行npm install來安裝項目依賴。那這些流程是否也可以加入到自動化的流程中呢?
當然可以,shipit-deploy的執行過程中會執行一系列任務,每執行完一個任務,都會emit一個事件,只要我們監聽這個事件就可以做我們想做的事。
與腳本結合使用:那么,是不是定制了插件就完全不用腳本文件了呢,不一定,腳本文件有其好處,我們也可以很簡單的把你現有的腳本加入自動化流程中。
既然我們可以使用shipit-deploy來實現同步代碼,用插件和腳本來完成啟動等額外工作,那shipit-deploy就不僅僅可以部署nodejs的項目,其他語言的項目也可以按照這個套路來實現自動化的部署。有人就成功的使用shipit-cli/shipit-deploy實現了一個php的項目的自動化部署。為了盡量少的影響非nodejs的項目,最好把shipit-cli和shipit-deploy全局安裝。
十一.Walle
轉載:https://tech.meituan.com/android-apk-v2-signature-scheme.html
Walle一個web部署系統工具,可能也是個持續發布工具,配置簡單、功能完善、界面流暢、開箱即用!支持git、svn版本管理,支持各種web代碼發布,靜態的HTML、動態PHP、需要編譯的JAVA等,用戶權限管理,各種自定義高級任務。一鍵上線、回滾。
項目地址:walle-瓦力,上線開源兩個月,目前已支持超過十家企業線上部署使用,每周更新一個版本,持續帶來新特性。
walle的組件關系、原理:walle部署在一臺宿主機提供一個web UI,方便用戶自主更新代碼部署到目標機群。Walle是一個跑在LNMP(LAMP)上的PHP服務,宿主機與目標機群建立信任,通過操作bash命令來實現代碼同步、自定義高級任務。
配置:用戶的項目可自定義git/svn代碼托管地址、宿主機、目標機群、高級任務等。配置完成后可快速復制當前配置、檢測配置是否正常、以及該項目的審核管理員和成員。
walle的持續部署與Git Flow思想一致,在不同的環境部署不同的分支。劃分三個環境:測試環境、預發布環境、生產環境。測試環境和預發布環境推薦分支部署,生產環境推薦tag部署。當然,這更適合milestone開發方式,如果是每天快速迭代多個版本,打tag成本就有點高了。
部署是在一臺宿主機拉取代碼,做編譯、配置后,向目標機群分發,執行相關目標機群任務。部署流程拆分為以下6個環節,其中1-5為在宿主機進行,6在目標機群執行。
1.權限、目錄檢查,開辟一個上線的獨立空間以并行發布,防止同時部署出現代碼污染
2.pre-deploy任務,代碼檢出前的一些操作任務,如環境檢查
3.代碼從git/svn版本庫中檢出
4.post-deploy任務,代碼檢出之后操作任務,如java的mvn編譯,php的composer插件安裝
5.保留在獨立空間的代碼均會被同步至目標機群的一個版本庫中
6.全量更新:當所有機器都分發完畢,開始做pre-release任務(java暫停服務)、切換版本軟鏈、post-release任務(?java啟動服務)
為保證服務的完整性,先同步代碼,后切換服務。部署發布每次都會有版本記錄保留,版本上線事故一旦發生,回滾可瞬間完成。可配置線上版本最大保留數,過期的版本被會刪除,同時也就不能回滾被刪除的版本。對于需要編譯、自定義多任務輔助,可配置前置、后置操作自定義任務;同時提供一些預置變量({WORKSPACE}宿主機的當前獨立空間、目標機webroot,{VERSION}版本庫目錄)方便用戶操作自定義任務。
上線過程直到目標機群全部完成之前,如有任一環節失敗將會回滾,需要重新上線,同時會把錯誤信息提示用戶。
?
---------------------
作者:代碼幫
來源:CSDN
原文:https://blog.csdn.net/ITLearnHall/article/details/80651209
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件