DevOps自動化組件-RUNDECK介紹、開發、部署、使用

DevOps自動化組件-RUNDECK介紹、開發、部署、使用

前言碎語

RunDeck 是用 Java開發的自動化部署持續集成的工具應用,項目已開源。runDeck的產品屬性和jenkis類似。提供web界面和restapi來給用戶使用,Web界面主要提供給非開發人員使用,如項目組的測試和運維人員,而它提供的豐富的api使得開發可以很容易的融合到DevOps平臺體系中。同時runDeck提供了完整的權限管理,開發,運維,測試可以在RunDeck中完成軟件交付的整個流程。

開源地址:https://github.com/rundeck/rundeck

官網地址:http://rundeck.org/

RunDeck的使用場景?

(一).標準流程自動化

DevOps自動化組件-RUNDECK介紹、開發、部署、使用

rundeck的自動化功能幫助你規範你的操作程序,設置訪問控制,自動化功能特徵如下

1.自定義工作流

rundeck提供工具來定義、構建、部署和管理自動化。這些自動化的過程在工作流程中定義。工作流作用於自動化過程中的各個任務。工作流運行失敗或者成功都會發出通知。當錯誤發生時,你可以選擇立即失敗,或者觸發特定的錯誤處理程序步驟。

2.端到端的業務流程在本地或遠程服務器

rundeck工作流可以協調在本地或遠程服務器的步驟。遠程服務器是針對使用過濾器,查詢表達式匹配到屬性,和標籤的服務器節點。

3.跨平臺

rundeck提高跨多個工具,系統的效率,並通過消除或跨越技術和組織流程結構部門。rundeck工作流可以執行在Windows和UNIX平臺,使用節點插件可以將RunDeck擴展到新的平臺(包括網絡設備)。

4.可擴展

rundeck通過插件機制拓展功能。官方提供很多非常使用的插件,當然你想開發符合自己公司特色的插件以及webui也是非常的簡單

5.安全訪問控制

工作流可以授權其他用戶提供自助服務如運營團隊。rundeck提供細粒度的基於角色的訪問控制策略安全。

6.和主流的DevOps組件集成

rundeck提供了豐富的restapi可以和主流的DevOps組件集成,如jenkins等

(二)作業調度,提供web界面定義調度任務執行shell命令

DevOps自動化組件-RUNDECK介紹、開發、部署、使用

作業調度是Rundeck的核心功能。使用場景如:

自動調度任務,提供可視化的界面查看結構反饋,支持的調度特徵如:無代理、跨平臺(Windows需要插件支持)、文件傳輸、審計報告、等等

更多的使用場景詳情見官網。

使用案例分析?

  1. John D'Esposito Implements ChatOps for Financial Services

  2. Jordan Koch from Disney

開發部署服務?

(1)如何二次開發RunDeck?

RunDeck開發需要的環境包括:java、grials(工程自帶了)、IDEA、IDEA Lombok插件、gradle

第一步:git clong https://github.com/rundeck/rundeck.git

第二步:用IDEA打開項目,安裝Lombok插件,使用gradle構建

RunDeck工程主要有核心模塊,插件模塊,啟動器模塊,app模塊,我們二次開發主要關注插件模塊,和app模塊就差不多了。

(2)怎麼部署RunDeck環境?

1.獲得部署jar

自己使用gradle構建,在rundeck\rundeck-launcher\build\libs會生成rundeck-launcher-2.10.5-SNAPSHOT.jar。

從官網下載構建好的:http://dl.bintray.com/rundeck/rundeck-maven/rundeck-launcher-2.10.5.jar

2.新建rundeck目錄,將jar包移到此目錄執行java -jar rundeck-launcher-2.10.5.jar 服務便啟動了

服務啟動後,會在rundeck目錄生成如下相關目錄:

  • var:存放遠程主機key信息,如ssh的密碼,服務私鑰。保存新建項目的日誌信息,生命週期數據等。存儲項目節點資源模型緩存信息,等

  • tools:存放項目依賴的jar包,相關指令集

  • server:存儲RunDeck配置信息(用戶體系,數據庫連接)。RunDeckserver本身的日誌信息、項目元數據庫信息、webui項目信息、web容器的依賴(jetty)

  • projects:存儲新建的項目信息,包括項目節點信息等

  • libext: 存儲插件依賴jar

  • etc:存儲RunDeck使用的到的框架配置信息,如日誌框架log4j,以及指定其他所有配置的磁盤存儲路徑,如以上所示目錄,都可在etc中的配置文件指定

3.訪問RunDeck服務

默認的web端口為4440,所以打開:http://localhost:4440,即可看到如下頁面

DevOps自動化組件-RUNDECK介紹、開發、部署、使用

ps:注意我截圖的地址,yudian-pc:4440,是因為RunDeck啟動的時候默認獲取了計算機名稱設置了framework.server.hostname = yudian-PC,這會導致雖然我們用localhost可以訪問到服務,但是提交表單跳轉的時候,都會被定向到yudian-pc:4440。解決方法如下:

1.設置你本機的host,如,設置yudian-pc定向到localhost。

2.修改配置文件/etc/framework.properties,自己指定如下的配置文件

framework.server.name = yudian-PC

framework.server.hostname = yudian-PC

framework.server.port = 4440

framework.server.url = http://yudian-PC:4440

4.用戶指定的配置?

RunDeck有很多的數據可以由用戶自己來配置,如上面的server.url端口等,當然很多的配置使用默認的就好了,不需要改動。其他的如數據庫,初始化密碼等還是可以改下的,RunDeck的信息的存儲體系包括數據庫系統和文件系統,其中數據庫默認使用的h2數據庫,當使用久數據一多性能就會下降了,當然,我們可以配置其他的支持jdbc的數據庫來存儲數據。

1.修改默認的用戶名密碼:/server/config/realm.properties

2.修改數據庫連/server/config/rundeck-config.properties,如

dataSource.url = jdbc:mysql://localhost:3306/rundeckdb?autoReconnect=true

dataSource.username = root

dataSource.password = sasa

dataSource.driverClassName=com.mysql.jdbc.Driver

3.添加郵箱通知配/server/config/rundeck-config.properties,如

grails.mail.host=smtp.sina.com.cn

grails.mail.port=25

grails.mail.username=xxx

grails.mail.password=xxx

RunDeck的使用?

RunDeck使用過程中會涉及到五大模塊概念,分別如Project,Nodes,Jobs,Commands,Activity,其他還有key倉庫,用戶權限管理等等。

Project是最基礎的模塊,Nodes,Jobs,Commands等都關聯了Project,下面我們從創建項目,到執行命名,走一個完整的流程實例。

(1)創建Project

輸入項目名稱(項目名稱好像不支持中文),項目描述,選好ssh權限校驗的方式(私鑰 or password),提交

DevOps自動化組件-RUNDECK介紹、開發、部署、使用

(2)添加節點信息

默認的節點配置信息,存儲在RunDeck/projects/下的。這裡以項目名稱ca為例,打開projects/ca/etc/resources.xm文件,添加節點信息

添加node節點:屬性如下

name="ca" description="newca server node" tags="" hostname="106.75.60.xxx" osArch="amd64" osFamily="unix" osName="Linux" osVersion="10.0" username="root"

回到文本控制檯,刷新Nodes模塊就會看到新增的節點信息,如

DevOps自動化組件-RUNDECK介紹、開發、部署、使用

(3)新增用於節點服務器權限驗證的key

入口從,右上角用戶標誌的左邊那個配置按鈕key storage進入,注意的我的url為http://yudian-pc:4440/menu/storage。創建好後在項目ssh屬性password中選中創建好的key

DevOps自動化組件-RUNDECK介紹、開發、部署、使用

(4)新增job,添加查看日誌的命令,在ca節點執行

新增一個可執行的job,添加tail -f xxx.log用來查看遠程服務器輸出的日誌信息,操作如下,注意如下箭頭標註,可以指定篩選到的服務器,這裡是ca,也可以配置命令執行失敗後的處理流程等等。

DevOps自動化組件-RUNDECK介紹、開發、部署、使用

DevOps自動化組件-RUNDECK介紹、開發、部署、使用

執行job後,會不斷地輸出目標節點服務器的日誌信息,如

DevOps自動化組件-RUNDECK介紹、開發、部署、使用

(5)Activity中查看歷史執行記錄

DevOps自動化組件-RUNDECK介紹、開發、部署、使用

(6)其他相關使用

如下圖,還有用戶權限控制,插件管理,報表導出等等功能,考慮篇幅這裡就不一一列舉了

DevOps自動化組件-RUNDECK介紹、開發、部署、使用

文末結語

RunDeck功能概念清晰,webui交互友好,細粒度的安全策略控制非常適合跨部門跨職能的協同作業,基於token機制的api很好的集成到DevOps平臺中,是DevOps上下文中不可多得的組件。


分享到:


相關文章: