🦁

ラズパイ で Rundeck Community を 動かしてみた

2022/12/16に公開

クラウドでもなくローカルでもない場所ということで、ラズパイで動かすことを考えてみました。

結果4B(メモリ4GB)では、なんとか動作することが確認できました。

  • 利用したラズパイ : Raspberry Pi 4B (4GB)
  • ラズパイのOS : Raspberry Pi OS with desktop
  • 導入したRundeck : Rundeck Community 4.8.0

本格的に使うには、8GBは最低限欲しいかなぁ(バックエンドにMySQLなども必要だし)

導入情報

公式の Debian 情報みながら Rundeck Community を導入します。

一つだけ依存関係のパッケージ (uuid-runtime) が不足してたので、そのあたりを補って導入。

rundeck本体は、deb状態で 230MB程度あります。

wget https://packagecloud.io/pagerduty/rundeck/packages/any/any/rundeck_4.8.0.20221110-1_all.deb/download.deb -O rundeck_4.8.0.20221110-1_all.deb
apt-get install openjdk-8-jdk-headless uuid-runtime
dpkg -i rundeck_4.8.0.20221110-1_all.deb

昔はリポジトリ提供があったのですが、いまは無いのかな? (Enterprise版は提供つづいてる)

起動 と ログ

導入直後はサービス落ちたままなので、コマンドいれて立ち上げます

## デーモン起動
$ sudo systemctl status rundeckd

## 自動起動を設定 (お好みで)
$ sudo systemctl enable rundeckd

起動時間 300秒ぐらいかかりますので、気長に待ちましょう (汗

個人的なオススメは、 service.log を tail / less で自動読み込みしておく。もれなくエラーがでてると、すぐ気づけますし。

このログに "running at http://localhost:4440" が出たら、WebUIがちゃんと反応してくれます。

ログの例

## /var/log/rundeck/service.log
...
[Development Mode] Usage of H2 database is recommended only for development and testing
INFO  rundeckapp.BootStrap - Rundeck startup finished in 5688ms
INFO  rundeckapp.Application - Started Application in 321.211 seconds (JVM running for 353.955)
Grails application running at http://localhost:4440 in environment: production

localhost:4440 で動きます

Rundeckのデフォルトは localhost , ポート番号 4440 で動いてます。

僕がはまったのは、LAN、WANアドレスでも、WebUIのログイン画面はでます (例: http://192.168.100.123:4440)。

ですが、ログイン後に localhost:4440 にリダイレクトされるので、実質動作しません。

ラズパイで使う場合、ラズパイにVNCしてRundeckのWebUIというケースは、あまり無いかなと思います。

対応1 : 設定ファイルで変更

公式 System Properties Configuration を参考に。

次のファイルを編集。

その1。'http://localhost:4440' の部分を、自分が望むIP・FQDNとポート番号に変更します

その2。待受ポート番号の変更を行います。

環境変数 RDECK_JVM の中 で -Dserver.http.port=$RDECK_HTTP_PORT で設定されます。

  • /etc/rundeck/profile
    • RDECK_HTTP_PORT=<任意ポート番号> を RDECK_JVM よりも前に設定

設定したら、 rundeckd をリスタートします。

対応2 : nginxでリバースプロキシ

個人的には、後述のように nginx をリバースプロキシで設定するのがオススメ。

ポート番号の変更も手軽です。

H2 データベース で動いてます

インストール直後のバックエンドは H2データベース (Java内蔵?) で開発用途となっています。

本番利用や大量のジョブを仕込むときは、 H2からMySQLへの変更などが必要です。

ジョブ自体は、プロジェクト毎にGitHubなどに連動が可能。

ただ、DBマイグレーションは、なさそう。

過去の実行ログなどを捨てれば、運用後にも移行はできそうではあるかな。

nginx リバースプロキシ で動作させる

公式の情報をもとに、対応するといいかと思います。

SSL対応も Rundeck内蔵Webサーバーで可能ですが、その場合にも、nginxで管理したほうが楽じゃないでしょうか?

nginx側の設定

/etc/nginx/site-available/default への追記をする場合だと、こんな感じでいけるかな。

設定したら nginx をリロード (# systemctl reload nginx) します。

server {
 listen 80 default_server;
 listen [::]:80 default_server;
 
 location / {
   proxy_pass http://localhost:4440;
   proxy_set_header X-Forwarded-Host $host:$server_port;
   proxy_set_header X-Forwarded-Server $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
}

Rundeck側の設定

次の2ファイルを編集します。

'http://localhost:4440' の部分を 'http://192.168.100.123' のように、nginxでホストするIPアドレスFQDNに変更します。

これらのファイルを編集しなくても一見動いてるように見えますが、WebUIの内部APIコールに失敗して、プラグインが読み込めないなどの副作用が出てしまいます(僕が、はまりました。。)

設定したら、 rundeckd をリスタート (# systemctl restart rundeckd) します。

WebUI ログイン後

ダークモードにも対応してた!

その他

起動後のパフォーマンス

ジョブゼロの状態で、WebUIにログインしたときに取得しました。

なお、ベースは Raspbian Desktop なので、Xも動いてます。。。 (最適化は、手抜きした)

## メモリ と TOP
$ free
              total        used        free      shared  buff/cache   available
Mem:        3930868      691396     2764040       33032      475432     3078440
Swap:        102396           0      102396

$ top
top - 19:25:38 up 13 min,  3 users,  load average: 0.07, 0.33, 0.33
Tasks: 159 total,   1 running, 158 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.2 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   3838.7 total,   2642.6 free,    726.4 used,    469.8 buff/cache
MiB Swap:    100.0 total,    100.0 free,      0.0 used.   2954.9 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  492 rundeck   20   0 1320932 625624  17168 S  57.6  15.9   7:21.08 java
...

ラズパイ情報

Raspberry Pi 4B (4GB) を使ってます

pinout コマンド知らなかったけど、ピンアサイン見れるのは便利 !!

$ pinout
...
Revision           : c03112
SoC                : BCM2711
RAM                : 4GB
Storage            : MicroSD
USB ports          : 4 (of which 2 USB3)
Ethernet ports     : 1 (1000Mbps max. speed)
Wi-fi              : True
Bluetooth          : True
Camera ports (CSI) : 1
Display ports (DSI): 1

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 10 (buster)
Release:	10
Codename:	buster

参考

Discussion