はじめに
Fedoraを38で使っていたのですが、先日40がリリースされました。それではとインプレースアップグレードしたところrundeckが起動しなくなりました。
systemctl start rundeckdで一旦起動するのですが、その後しばらくすると落ちてしまいます。journalを出しても単にrundeckが落ちたことを示すメッセージがあるだけで、なぜ落ちたのかまでは解りませんでした。
結果的にはpostgresqlの設定が初期化されていたことが原因でした。バージョンアップでも設定は引き継がれるだろうという思いがあり、なかなか気づけませんでした。
環境
Fedora 40(38からバージョンアップ)
rundeck 5.3.0
postgresql 16.1
症状
systemctl start rundeckd
直後のステータスはグリーンなのですが、しばらくすると落ちてます。journalctlでは落ちたという事象は記録されるのですが、詳細が解りません。ただ、/var/log/rundec/service.logにはそれなりに大量のスタックトレースが出ていました。
[2024-05-23T13:33:24,078] ERROR pool.HikariPool - HikariPool-1 - Exception during pool initialization.
org.postgresql.util.PSQLException: FATAL: ユーザー"rundeck"のIdent認証に失敗しました
at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:698) ~[postgresql-42.7.2.jar!/:42.7.2]
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:207) ~[postgresql-42.7.2.jar!/:42.7.2]
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:262) ~[postgresql-42.7.2.jar!/:42.7.2]
:
:
検討
ユーザー"rundeck"のIdent認証に失敗しました
「Ident認証」というのが見慣れなかったのですが「Identify認証」のような意味で、ユーザ認証が通らないということなのだろうと推測しました。ユーザIDで'rundeck'
を使っているのばOSとPostgresqlです。
まさかと思いOSアカウントのrundeckを確認したところ(もちろん)健在でした。
ログにはPSQLException
とあるので、rundeckからposgresql内のDBアクセスに問題が出ているのだろうと見当を付け、一応postgresqlの管理アカウントでpostgresql内のDBやアカウントの状態を確認し、postgresqlのバージョンアップ後処理で(もちろん)スキーマが落とされたりもしていないことを確かめました。
残るは単純にクライアントからのログオン処理になります。そういえば、以前何かあった(が、何であったのかは忘れている)なと、ログイン設定がされているpg_hba.confを確認しました。
pgsql/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
それっぽい設定ですが、以前はどうだったのか覚えていません。幸いなことに、旧設定はdata-oldに残されていました。
pgsql/data-old/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all md5
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
そういえば、と遅まきながら思い出しました。以前rundeckをバージョンアップしたときにmd5にする設定としていたのでした。
対応
pg_hba.conf内のMETHODをmd5に変更した後、postgresqlのサービスを再起動して、rundeckを起動すると、今度は無事に起動して、以前に定義したジョブや実行結果も再びみられるようになりました。
おわりに
Fedoraアップグレードの中でposgresqlもバージョンアップされていたわけですが、その中で設定ファイルが初期化されていたのは気づきませんでした。
postgresqlのバージョンアップについてはデータファイルの設定変更や作成しているDBの照合順序バージョンの変更など、他にも後処理があったのですが、rundeckのトピックとは異なりますのでそちらは省略いたします。