Open9

Rundeck Community TIPSを集める場所

hideharahidehara

PagerDuty社 の Rundeck Community 情報をメモしてく

もともと Rundeck社が OSS+有償 で提供していた。後に、PD社が買収して 2022/12 現在にいたる。

v4.0 から製品名称・ラインナップ3種類となり、OSS版のみが当時の名称を残している

  • Rundeck Community
  • PagerDuty Process Automation OnPrem (旧 : Rundeck Enterprise)
  • PagerDuty Runbook Automation (SaaS版 Rundeck Enterprise)

ここでは Community を使う上での各種メモを残す予定。

よく使うリンク

Rundeck Release Highlights | Rundeck Docs , Release Notes

Rundeck Community Version History

Security Advisories

抑えておくべき基本情報

運用するにあたり、各所ででてくる気がするのでメモ

  • Java 8 or 11 , Groovy
  • Grails , Spring Framework
  • Jetty
  • Log4j
  • Quartz
  • Gradle
hideharahidehara

注意すべきバージョン間の差分

ほぼ毎月、新しいバージョンが出ているが、たまに大きな変更があるので注意。

  • H2データベースの互換性がない , v.4.1.0
    • H2 バージョンアップにより、以前のバージョンとの互換性がなくなったため
    • こちらが詳しく、開発者提供のスクリプトなども提供あり
  • アップグレード手順が必要 , to v4.1, v4.0, v3.4, v3.3.13, v3.3.4, v.3.3, v.3.2, v3.1
  • 新UIデザイン , v3.4.0
hideharahidehara

導入方法

以前は、Dockerが公式提供されてなかったけど、現在は公式であるみたい。

注意点は、パッケージングが変わると、各種設定ファイルなどの位置がかわったり、オススメの設定変更方法が変わる(warをWindows で使うときには基本な設定がほぼ無いとか、コンテナだと環境変数設定するとか)。

Linux パッケージ

  • rpm, deb

Java パッケージ (Windows向けもこれ)

  • war

コンテナ

  • Docker

PS deb で入れた場合、次のところに war が配置されてました

  • /var/lib/rundeck/bootstrap/rundeck-4.8.0-20221110.war
hideharahidehara

設定ファイル

公式 > Configuration

jaas-loginmodule.conf

後述の realm.properties を認証のために読み込む。

デフォルトのモジュール org.eclipse.jetty.jaas.spi.PropertyFileLoginModule だと、realmファイル変更のたびにサービス再起動が必要。

realmファイルのホットリロード・自動読み込みが必要な場合には、次に変更。

  • org.rundeck.jaas.jetty.ReloadablePropertyFileLoginModule

realm.properties

認証のユーザー名・パスワード・所属グループを設定する

デフォルトだと平文パスワードが書かれてるが、セキュリティ的に良くないですよね。。公式にはBCRYPT使えってあるので、それを真似するのが良い。

plain, MD5, CRYPT は避けろってあるのに、ファイルに残ってるのはいけてないかも(PRしなければw)

admin.aclpolicy

ACLポリシー定義のYAMLファイル

他にも *.aclpolicy_template が複数あるので参考にして、欲しいACLを作る。基本的には、グループに対してACLを割り振るべきだろうな(テンプレートもそうなってる)

なお、ファイルベースACLとは別に、GUIでもYAML直書きで設定は可能(この場合には、DBに保存されると思われる : Stored ACL Policies)。ごちゃまぜになるのも大変なので、どっちかに合わせたほうがいいのだろうけども。

※ファイルベースACLは、もしかするとサービス再起動が必要かも?(未検証)

hideharahidehara

プラグイン導入

プラグインの導入に再起動は必要?

Rundeckサービスの再起動なしで導入・アップデートが可能

プラグインの導入・アップデート手順

新規導入手順:

  • plugin ファイル ( plugin.jar OR some-plugin.zip ) を Rundeck server の $RDECK_BASE/libext フォルダ に配置
  • plugin ファイルの権限を他と合わせる (通常は rundeck:rundeck かな)
  • plugin が有効になる
  • Installed Plugin 画面で確認 (ギア > Plugins > Installed Plugins)

アップデート手順:

※公式には上書きすればOKとの説明がある。しかしRundeckの plugin ファイルには、バージョン番号が含まれるため、この方法が良いと判断。

  • libext フォルダ にある古い plugin ファイルを削除
  • libext フォルダ に前述の手順で新しい plugin ファイルを導入

参考

hideharahidehara

realm.properties に bcrypt でパスワード書く

起動時にキックされてる war ファイルを使うことで、記述に必要な暗号化されたパスワードがでてきます

$ java -jar rundeck-4.8.0-20221110.war --encryptpwd Jetty

Ubuntuにdebで入れた場合の例)

$ java -jar /var/lib/rundeck/bootstrap/rundeck-4.8.0-20221110.war --encryptpwd Jetty
Required values are marked with: *
Username (Optional, but necessary for Crypt encoding):
admin
*Value To Encrypt (The text you want to encrypt):
**********

==ENCRYPTED OUTPUT==
bcrypt: BCRYPT:$2a$10$iVi26v4YOUxgfMDw/nROTuarAmOfNa.e3xxxxxxxxxxxxxxxxxxx9
obfuscate: OBF:1bio1m0v1i9a1hho1w26xxxxxxxxxxxxxxxxxxxx
md5: MD5:e2d4d91d1d98xxxxxxxxxxxxxxxxxxxx
crypt: CRYPT:hakxxxxxxxxxX
hideharahidehara

Rundeck 導入OS

ダウンロード ページにあるだけのバラエティがある。ざっくりかけば次の3分類。

  • Linux(RPM、DEB)
  • Docker
  • Windows

個人的な経験ではWindows導入は、Javaのwar形式一択になるのでハードル高めと思う。

実行ノード

LinuxもWindowsも、Rundeckからジョブを実行するノードとして管理が可能。

同じLinuxサーバでも、ログインユーザーを変えて別ノードとすることもできるのが、便利なところ(混乱しやすいところでもあるかな)。
またRundeckノード(Rundeckをインストールしたサーバー)自身も、ローカルノードとして実行ノード扱いがデフォルトではなされている。便利な反面、意図しない rundeck権限でのジョブ実行にもつながるので、よく考えて扱うと良い。

Linuxノードへの接続方法は、SSH一択かと。

Windowsノードへの接続方法は、WinRM(PythonのPyWinRM)もしくはSSHも選択は可能。

Rundeck と Node管理、考慮ポイント

Rundeckノード(Rundeckのインストール先)と、ジョブを実行する実行ノードは、OSが異なっていても動作する。

しかし、多言語世界に生きる日本人にとっては、日本語サポート状況も考慮して選択する必要があるので、よく検証してから決定することが良いかと思う。

Rundeckノード、実行ノードのOSが、いずれも日本語Windowsの場合には問題は起きにくいと思う。

RundeckノードがLinuxで、実行ノードがWindowsのケースを構築したが、初期のWinRMモジュールでは多言語対応が今一で、SJIS(CP932)のエラーメッセージが文字化けして使い物にならなかった。現在のWinRMモジュールではアップデートによる、この問題は解消している(しかし、他の言語では?)