Rundeck Community TIPSを集める場所
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
導入方法
以前は、Dockerが公式提供されてなかったけど、現在は公式であるみたい。
注意点は、パッケージングが変わると、各種設定ファイルなどの位置がかわったり、オススメの設定変更方法が変わる(warをWindows で使うときには基本な設定がほぼ無いとか、コンテナだと環境変数設定するとか)。
Linux パッケージ
- rpm, deb
Java パッケージ (Windows向けもこれ)
- war
コンテナ
- Docker
PS deb で入れた場合、次のところに war が配置されてました
- /var/lib/rundeck/bootstrap/rundeck-4.8.0-20221110.war
設定ファイル
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は、もしかするとサービス再起動が必要かも?(未検証)
注意すべき運用メモ
crontab書式 は Javaライブラリの Quartz形式
Linuxのcrontab とは、ちょいと違う
- 秒 分 時 日 月 曜日 年
- Seconds Minutes Hours Day-of-Month Month Day-of-Week Year
- ※年 は、任意のオプションなので記載なくてもOK
参考
プラグイン導入
プラグインの導入に再起動は必要?
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 ファイルを導入
参考
- Installing Plugins | Rundeck Docs
- https://docs.rundeck.com/docs/administration/configuration/plugins/installing.html#installation
- $RDECK_BASE/libext フォルダ
- /var/lib/rundeck/libext (ラズパイに deb で導入した場合)
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
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モジュールではアップデートによる、この問題は解消している(しかし、他の言語では?)