Rundeck 的 Ansible 整合

我最早是用 Jenkins + Ansible 來執行 Playbook ,後來才用 AWX/Ansible Tower。最近在 Reddit 上看到有人介紹 Rundeck,想說來試用看看。

在 Rundeck 的文件裡,就有教學文章了:Rundeck and Ansible integration

安裝 Rundeck

安裝 Rundeck 相當簡單,只要到 Rundeck 下載網址 下載對應的套件檔,就可以安裝。我是用 Ubuntu,所以下載 .deb 檔案,用 dpkg -i 就可以安裝了。

設定

預設 Rundeck 是 Listen 4440 ,如果不設定 nginx 作 reverse proxy 的話,可以修改這兩個檔案:

  • /etc/rundeck/rundeck-config.properties
  • /etc/rundeck/framework.properties

把裡面的 http://localhost:4440 修改為 http://<your-ip>:4440 就可以了。

設定完成,重新啟動。

sudo systemctl restart rundeckd

重新啟動需要一段時間。

Rundeck

Rundeck 本身已經有 Ansible 的 plugin,所以不需要額外安裝,但 Rundeck 主機上需要先安裝好 ansible 才行。

Rundeck 預設的帳號跟密碼是 admin / admin。

登入以後要先新增 Project,新增完成後,點選左下角的 PROJECT SETTINGS ,再選 EDIT CONFIGURATION 。

PROJECT SETTING > EDIT CONFIGURATION

然後點到 Default Node executor 頁籤,這裡要把 Executor 改為 Ansible Ad-Hoc Node Executor,然後 Executable 欄位選為 /bin/bash

Default Node executor

連線需要帳號跟密碼,點選左下角的 PROJECT SETTINGS,再選 Key storage,到這裡去新增,然後把 private key 上傳上去。

Key storage Key storage

接著再點左下角的 PROJECT SETTINGS,再選 EDIT CONFIGURATION,再點到 Default Node executor 頁籤,往下捲到 SSH connection 的區塊。

預設的使用者名稱是 rundeck,但這邊因為我拿 Rundeck 主機當作目的主機,Rundeck 主機上的 rundeck 帳號是無法登入的,所以我另外新增 ansible 帳號,這裡填的使用者名稱就改為 ansible 。 再點 SSH Key Storage Path 欄位旁的 Select 按鈕 ,選到剛剛新增的 Key ,選完以後,按下儲存。

再來是設定 Node,選左下角的 PROJECT SETTINGS,再選 EDIT NODE。

點選 Add a new Node Source,這時會跳出選單,選 Ansible Resource Model Source。

這裡主要填 ansible inventory file path 就可以,主機清單可以預先放到 Rundeck 上的路徑,我是放在 /etc/ansible/hosts ,所以 ansible inventory file path 就是填 /etc/ansible/hosts

新增完成以後,點選左邊的 NODES,就會出現 Nodes。

有了 Node ,就可以去新增 Job,這邊就是填 playbook 的資訊就可以。

我在弄後面這幾個步驟,花了很多時間,明明就是照著文件來作,卻始終看不到 NODES。然後也僅僅試成功一次執行 Ansible playbook。

好吧,今天就弄到這裡,等有空再來詳細看為什麼 Rundeck 抓 Node 會有問題。