首頁 > 軟體

DevOps自動化元件RUNDECK開發部署使用說明

2022-03-01 19:00:23

前言

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

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

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

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命令

作業排程是Rundeck的核心功能。使用場景如:自動排程任務,提供視覺化的介面檢視結構反饋,支援的排程特徵如:無代理、跨平臺(Windows需要外掛支援)、檔案傳輸、審計報告、等等

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

使用案例分析

開發部署服務

(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構建,在rundeckrundeck-launcherbuildlibs會生成rundeck-launcher-2.10.5-SNAPSHOT.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,即可看到如下頁面

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),提交

(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模組就會看到新增的節點資訊,如

(3)新增用於節點伺服器許可權驗證的key

入口從,右上角使用者標誌的左邊那個設定按鈕key storage進入,注意的我的url為http://yudian-pc:4440/menu/storage。建立好後在專案ssh屬性password中選中建立好的key

(4)新增job,新增檢視紀錄檔的命令,在ca節點執行

新增一個可執行的job,新增tail -f xxx.log用來檢視遠端伺服器輸出的紀錄檔資訊,操作如下,注意如下箭頭標註,可以指定篩選到的伺服器,這裡是ca,也可以設定命令執行失敗後的處理流程等等。

執行job後,會不斷地輸出目標節點伺服器的紀錄檔資訊,如

(5)Activity中檢視歷史執行記錄

(6)其他相關使用

如下圖,還有使用者許可權控制,外掛管理,報表匯出等等功能,考慮篇幅這裡就不一一列舉了

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

以上就是DevOps自動化元件RUNDECK開發部署使用說明的詳細內容,更多關於DevOps自動化元件RUNDECK開發的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com