rundeck 介紹
Rundeck 是一款能在數據中心或雲環境中的日常業務中使程序自動化的開源軟件。Rundeck 提供了大量功能,可以減輕耗時繁重的體力勞動。團隊可以相互協作,分享如何過程自動化,查看業務活動或執行任務。Rundeck 允許您運行任意數量的節點從一個基於 web 的任務或命令行界面。Rundeck 還包括其他功能,使其易於擴展,您自動化努力包括 ︰ 訪問控制、 工作流建設、 調度、 記錄和與外部源節點和選項數據集成。具體流程圖參照官網的如下:
安裝
Rundeck 是你主機系統的服務器應用程序你指定一箇中央行政控制中心。內部,Rundeck 將作業定義和執行歷史記錄存儲在關係數據庫中。輸出從命令和工作處決保存在磁盤上,但可以轉發到遠程存儲例如logstash。
Rundeck 分佈式執行使用默認爲 SSH 但插件允許您使用其他手段如 MCollective、 Salt、 WinRM 或自定義的方法的可插拔的節點執行層的命令。Rundeck 服務器配置包括定義允許的遠程主機的出站用戶的設置。遠程計算機不需要回發到服務器進行連接。
1、安裝JDK
Rundeck 是一個基於 Java Servlet 服務器,因此需要支持Java 運行環境
#java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
2、安裝Rundeck
-
這裏使用的是rundeck的jar包安裝,讀者也可以採用rpm包方式的安裝,這裏看個人喜好,版本爲目前最新版本,下載地址 http://rundeck.org/downloads.html
rundeck-launcher-2.6.3.jar 現在3.0.1是war包不是jar包,啓動的方式還是跟jar包一樣
-
定義Rundeck的環境變量來進行下一步的安裝
#vim /etc/profile 在末尾添加 export RDECK_BASE=/opt/programs/rundeck_2.6.3 安裝目錄可以自己定義 #source /etc/profile #echo $RDECK_BASE /opt/programs/rundeck_2.6.3
-
定義安裝目錄後創建之後才能安裝
#mkdir -p $RDECK_BASE
-
複製下載的jar包到安裝目錄夾中
#cp rundeck-launcher-2.6.3.jar $RDECK_BASE
-
啓動jar包
#cd $RDECK_BASE
#java -XX:MaxPermSize=256m -Xmx1024m -jar rundeck-launcher-2.6.3.jar
-
等待啓動成功的信息
2010-11-19 13:35:51.127::INFO: Started [email protected]:4440
當出現如上圖的信息,表示當前服務啓動成功,端口監聽在默認端口4440,初始用戶和密碼都是admin
啓動成功後,我們可以看到rundeck的目錄下有以下目錄:
#ls
etc libext projects rundeck-launcher-2.6.3.jar server tools var
-
啓動和關閉
在初始化jar包之後,下一次啓動和關閉可以進行如下操 -
#Startup $RDECK_BASE/server/sbin/rundeckd start #Shutdown $RDECK_BASE/server/sbin/rundeckd stop
-
#vim /$RDECK_BASE/etc/framework.properties framework.ssh.keypath = /home/apprun/.ssh/id_rsa #ssh認證用戶的key存放目錄 framework.ssh.user = apprun #啓動默認用戶 #chown apprun:apprun rundeck_2.6.3/ -R #修改完之後,別忘了修改rundeck目錄的宿主
-
簡單使用Rundeck
1、幾個基本概念
-
Role-based Access Control Policies︰ Rundeck 訪問控制策略將授予用戶和用戶組某些權限執行權限限制訪問rundeck 資源,如項目、 工作、 節點、 命令和 API。
-
Projects ︰ 項目是分開管理活動的地方。所有的 Rundeck 活動發生在項目的上下文內。多個項目可以保持相同的 Rundeck 服務器上。
-
Jobs ︰ 作業封裝步驟、 作業選項和節點在哪裏執行步驟的序列。
-
Nodes ︰ 節點是一種資源,是網絡訪問主機物理或虛擬實例。資源模型是在項目中的節點表示。
-
Commands ︰ 命令是在一個節點上執行單個可執行字符串。Rundeck 調用命令通過節點的遺囑執行人並計算命令字符串來執行它的節點上。
-
Executions ︰ 執行是活動的表示某一正在運行或已完成的命令或工作。關於執行數據在 rundeck 用於監測進展的工作或命令和後來的報道發生了什麼事。
-
Plugins ︰ Rundeck 所做的大多數是通過其插件之一。插件的存在在節點上執行命令、 執行中的工作步驟、 發送關於作業狀態的通知,收集有關您的網絡中的主機的信息,將一個文件複製到遠程的服務器、 存儲和流日誌,或談到用戶目錄。
在開始之前,簡述一下我的環境:
rundeck-server:bd-stg-test-97
rundeck-node1:bd-stg-test-98
rundeck-node2:bd-stg-test-99
ssh認證已經做好,97上的apprun均可以免密碼登錄到98和99
2、添加Project
- 點擊添加
- 添加項目名以及描述
- 選擇ssh認證key存放位置
- 點擊創建
- 創建完成後可以看到如下。此時並沒有任何job和node:
3、添加Node
在創建完一個project之後,在rundeck的主目錄下面,保存着它的一個配置,在node的配置文件中添加節點如下:
#vim /opt/programs/rundeck_2.6.3/projects/Rundeck_Test/etc/resources.xml
<?xml version="1.0" encoding="UTF-8"?>
<project>
<node name="bd-stg-test-97" description="Rundeck server node" tags="" hostname="bd-stg-test-97" osArch="amd64" osFamily="unix" osName="Linux" osVersion="2.6.32-573.el6.x86_64" username="apprun"/>
<node name="bd-stg-test-98" description="Rundeck client node1" tags="" hostname="172.16.57.98" osArch="amd64" osFamily="unix" osName="Linux" osVersion="2.6.32-573.el6.x86_64" username="apprun"/>
<node name="bd-stg-test-99" description="Rundeck client node2" tags="" hostname="172.16.57.99" osArch="amd64" osFamily="unix" osName="Linux" osVersion="2.6.32-573.el6.x86_64" username="apprun"/>
</project>
添加完成後,不需要重啓服務,刷新後,可以看到node信息已經出現在web界面上:
我們來進行一個測試,是否能在web界面上遠程控制操作兩臺node,這個過程類似於saltstack:
執行命令很簡單,每一臺的執行結果也清晰地展現出來了,說明服務端與節點之間的配置已經完成了,如果出現了ssh認證錯誤,還要重現檢查一下目錄權限和ssh認證配置有沒有錯誤。
4、添加Job
- 創建job
- 添加job的命名和描述,這裏只是一個簡單的測試,所以還是用的上面的例子
- 點擊創建
- 執行job
- 查看執行結果