天天看點

Rundeck部署和基本使用

rundeck 介紹

Rundeck 是一款能在資料中心或雲環境中的日常業務中使程式自動化的開源軟體。Rundeck 提供了大量功能,可以減輕耗時繁重的體力勞動。團隊可以互相協作,分享如何過程自動化,檢視業務活動或執行任務。Rundeck 允許您運作任意數量的節點從一個基于 web 的任務或指令行界面。Rundeck 還包括其他功能,使其易于擴充,您自動化努力包括 ︰ 通路控制、 工作流建設、 排程、 記錄和與外部源節點和選項資料內建。具體流程圖參照官網的如下:

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
           
  • 定義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部署和基本使用

啟動成功後,我們可以看到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
           

我這裡采用的是普通使用者apprun登入,RPM包預設的是rundeck使用者,讀者可以定義啟動的使用者,具體修改如下:

#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

  • 點選添加
Rundeck部署和基本使用
  • 添加項目名以及描述
Rundeck部署和基本使用
  • 選擇ssh認證key存放位置
Rundeck部署和基本使用
Rundeck部署和基本使用
  • 點選建立
Rundeck部署和基本使用
  • 建立完成後可以看到如下。此時并沒有任何job和node:
Rundeck部署和基本使用

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界面上:

Rundeck部署和基本使用

我們來進行一個測試,是否能在web界面上遠端控制操作兩台node,這個過程類似于saltstack:

Rundeck部署和基本使用

執行指令很簡單,每一台的執行結果也清晰地展現出來了,說明服務端與節點之間的配置已經完成了,如果出現了ssh認證錯誤,還要重制檢查一下目錄權限和ssh認證配置有沒有錯誤。

4、添加Job

  • 建立job
Rundeck部署和基本使用
  • 添加job的命名和描述,這裡隻是一個簡單的測試,是以還是用的上面的例子
Rundeck部署和基本使用
Rundeck部署和基本使用
  • 執行job
Rundeck部署和基本使用
  • 檢視執行結果
Rundeck部署和基本使用

----------------------------我也是有底線的-----------------------------