何をやったのか
fedraの環境でそれなりに長くrundeckで定期的なスクリプト実行をスケジューリングさせていたのですが、ある時気が付くとdnf upgradeでrundeckのリポジトリが参照できなくなっていることに気が付きました。
RUNDECKのインストレーションガイドを読むと、マニュアルインストールの項には「bintray-rundeckpro-rpm.repoのエントリがあったら削除して、以下の内容に置き換えろ」とあります。
そういうことなら、と置き換えて(yumはdnfに読み替えて)upgradeしたところ……起動しなくなりました。
アップブレード後のバージョンは4.2.1(v4.2.1-20220511)です。
何が起きたのか
/var/log/rundeck/service.logから、起動後にframeworkからエラーが出ていることは分かりました。
- 現象1
- ERROR boot.SpringApplication - Application run failed
設定を終えて再起動すると、相変わらず起動してから落ちています。ただ、/var/log/rundeck/service.logに出ているメッセージ内容が別のものになっていました。
- 現象2
- Unsupported connection setting "MVCC"
RPMベースの導入なので、対象のコンフィグファイルは以下のものになります。
/etc/rundeck/rundeck-config.properties
こちらの環境ではすでにPostgreSQLが汎的用途のために稼働していたので、それを使うことにしたのですが、マニュアルには接続定義しか記載がありません。無ければ作るのでしょうか……と思いつつ再起動すると、起動後にエラーで落ちて、rundeckロールが無いとservice.logに出ていました。事前に用意していないので当たり前なのですが、このマニュアルの作り方はどうでしょう。
もちろん、rundeckが使用するデータベースの準備もマニュアルに記載があります。ただし、離れたセクションに収められています。
結局どうなったか
鍵関係の追加設定とDB接続まわりの設定を行うと、rundeckは無事に起動しました。ただし、DBを新規作成したことから解っていましたが、旧環境の定義周りは全て落ちています。スケジューラーしか使っていなかったので、プロジェクトの定義自体は手作業でも大した話ではないのですが、ジョブ定義は少々面倒です。
ただ、旧版のジョブでは定期的にジョブ定義をxmlにエクスポートしていました。バージョンが違うのでもしかしたらエラーで撥ねられるかもしれないとは思いましたが、最新のxmlをインポートさせると無事に読み込み、ジョブ定義を回復することができました。
他には何かあったか?
まずadminのパスワードはrealm.propertiesに情報があります。これを確認しないと当然ログインできません。
戸惑ったのは保存やキャンセル操作後の画面遷移がうまく機能していないように見えたことです。ブラウザのトレースツールを確認するとCSPの警告が出てキャンセルされていました。ブラウザはサーバー外からアクセスするのでそれなりのサーバー名なりIPアドレスなりを使うのですが、rundeck-config.propertiesのgrails.serverURLで使用しているサーバー名がlocalhostのままだったことが原因でした。
rundeckのCLIも合わせて更新しました。rdコマンドが使う環境変数に変わりはなく、こちらは特に問題らしきものには出くわしていません。
今はおちつきましたが
エンタープライズ版では他に使える機能もあるようですが、今はスケジューラーくらいしか使っていません。そういう利用環境では旧いbintray-rundeckpro-rpm.repo版のままそっとしておいた方が良かったかな、とか思わなくもありません。あんまり思い付きでバージョンアップするものではないですね。