最新遠程部署運維工具彙總

一.Puppet 

轉載https://baike.baidu.com/item/puppet/5109503?fr=aladdinphp

puppet是一種Linux、Unix、windows平臺的集中配置管理系統,使用自有的puppet描述語言,可管理配置文件、用戶、cron任務、軟件包、系統服務等。puppet把這些系統實體稱之爲資源,puppet的設計目標是簡化對這些資源的管理以及妥善處理資源間的依賴關係。html

puppet採用C/S星狀的結構,全部的客戶端和一個或幾個服務器交互。每一個客戶端週期的(默認半個小時)向服務器發送請求,得到其最新的配置信息,保證和該配置信息同步。每一個puppet客戶端每半小時(能夠設置)鏈接一次服務器端, 下載最新的配置文件,而且嚴格按照配置文件來配置客戶端. 配置完成之後,puppet客戶端能夠反饋給服務器端一個消息. 若是出錯,也會給服務器端反饋一個消息。java

利用Puppet來給客戶端自動生成在服務端定義好的文件。node

由master端向多個Client端分發文件。python

二.Ducter

轉載http://www.ducter.net/android

Ducter是面向設備、產品的分佈式命令平臺,爲第三方提供針對設備與產品的信息收集或操控的命令通道。做爲國內已在多個公司投入使用的一款開源產品運維管理系統。 Ducter是產品的管理平臺,實現任意產品的管理、監控及用戶自定義的發佈與回退,爲第三方提供產品運行情況的實時數據及事件通知。Ducter是集設備管理、產品管理、服務上線和服務器操做等於一體的運維管理系統。該系統分爲Dcuter-Server/Ducter-Web兩個部分。c++

Ducter目標:git

    產品管理系統web

    產品->服務->服務池(服務池屬性)->服務池設備->設備。shell

    產品自動發佈系統

    可視化、自定義、併發、自動。

    適用於任意產品類型: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的特色有:

一、Func能夠在主控機上一次管理任意多臺或任意多個服務器組。

二、Func基於Certmaster(https://fedorahosted.org/certmaster/)創建了Master-Slaves主從SSL證書管控體系,能夠將證書自動分發到全部受控服務器。

三、Func命令行能夠直接發送遠程命令或者遠程獲取數據。

四、Func 開發者已經完成了大多數經常使用任務模塊的開發,包括命令執行模塊、文件傳輸模塊、IPtables模塊、查看硬件信息模塊、Mount模塊、進程模塊、服務模塊、重啓系統模塊等。

五、能夠經過Func提供的Python API輕鬆編寫擴展模塊,以實現具體功能擴展。並且任何Func命令行能完成的工做,都能經過API編程實現。

六、Func通信基於XMLRPC和SSL標準協議。

5、ansible

轉載http://blog.51cto.com/sofar/1579894

一、簡介

ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、cfengine、chef、func、fabric)的優勢,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基於模塊工做的,自己沒有批量部署的能力。真正具備批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:

(1)、鏈接插件connection plugins:負責和被監控端實現通訊;

(2)、host inventory:指定操做的主機,是一個配置文件裏面定義監控的主機;

(3)、各類模塊核心模塊、command模塊、自定義模塊;

(4)、藉助於插件完成記錄日誌郵件等功能;

(5)、playbook:劇本執行多個任務時,非必需可讓節點一次性運行多個任務。

二、整體架構

 

Ansible由5 個部分組成:

    Ansible:核心

    Modules:包括 Ansible 自帶的核心模塊及自定義模塊 

    Plugins:完成模塊功能的補充,包括鏈接插件、郵件插件等 

    Playbooks:劇本,定義 Ansible 多任務配置文件,由Ansible自動執行

    Inventory:定義 Ansible 管理主機的清單

三、特性

(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:可實現多級指揮。

四、優勢
(1)、輕量級,無需在客戶端安裝agent,更新時,只需在操做機上進行一次更新便可;
(2)、批量任務執行能夠寫成腳本,並且不用分發到遠程就能夠執行;
(3)、使用python編寫,維護更簡單,ruby語法過於複雜;
(4)、支持sudo。

五、任務執行流程

六.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

一、介紹

SaltStack是一個服務器基礎架構集中化管理平臺,具有配置管理、遠程執行、監控等功能,通常能夠理解爲簡化版的puppet和增強版的func。SaltStack基於Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia二、python-msgpack和PyYAML等)構建,並且使用RAS Key方式確認身份,傳輸採用AES加密,安全性能更高。

經過部署SaltStack環境,咱們能夠在成千上萬臺服務器上作到批量執行命令,根據不一樣業務特性進行配置集中化管理、分發文件、採集服務器數據、操做系統基礎及軟件包管理等,SaltStack是運維人員提升工做效率、規範業務配置與操做的利器。

二、自動化工具對比

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

 缺點:社區相對比較年輕,文檔資料較少(其實官方文檔已經講解得很深刻了...)

三、Saltstack的三種運行方式

·  Local

·  Master/Minion

·  Salt SSH

Saltstack最傳統的運行方式仍是C/S模式,須要在被管理節點上安裝Minion客戶端;其實Saltstack也支持SSH方式,無需安裝Agent,經過SSH實現管理

四、特性
(1)、部署簡單、方便;
(2)、支持大部分UNIX/Linux及Windows環境;
(3)、主從集中化管理;
(4)、配置簡單、功能強大、擴展性強;
(5)、主控端(master)和被控端(minion)基於證書認證,安全可靠;

(6)、支持API及自定義模塊,可經過Python輕鬆擴展。

 

五、Saltstack目前最主要的三大主要功能

·  遠程執行

·  配置管理

·  雲管理

六、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}版本庫目錄)方便用戶操做自定義任務。

上線過程直到目標機羣所有完成以前,若有任一環節失敗將會回滾,須要從新上線,同時會把錯誤信息提示用戶。

相關文章
相關標籤/搜索