猫とアップルパイ

インフラエンジニアをやってます!エンジニアってむずかしいよね。

rundeck サーバ構築でハマる一覧

最近ジョブスケジューラとして rundeck がお気に入りでよく使用している。
複数バッチを順番に実行できるワークフローモードなどがあるので、今までは crontab で実行していた定期実行バッチも rundeck に移行している。
ansible 実行などのインフラプロビジョニングも rundeck で簡単に実行〜テストまで一連のジョブにして実行できるのでとても便利。
rundeck とは Linux でも Windows でも動く java ベースの OSS ツール。
わたしは Linux でしか稼働させたことがないが、サーバ構築時に何回もハマったことをメモしておく。

rundeck の DB 接続設定

rundeck の設定ファイル (/etc/rundeck/rundeck-config.properties) で、 日本語が扱えるように JDBC ドライバの設定を行う。
これを行わないと、rundeck でジョブ登録時に日本語文字列を入力するとエラーになってしまう。
私はこれがわからずしばらく英語でジョブ設定を書いてました(;∀;)

設定箇所はこの部分。

# data Source
dataSource.url = jdbc:mysql://DBサーバのホスト名/rundeck?autoReconnect=true&useUnicode=true&characterEncoding=utf8

詳しい設定内容は以下の通り。

項目 内容 デフォルト値
autoReconnects データベースとの接続が失われた場合、再接続を試みるか (true / false) false
useUnicode 文字列を扱う際、Unicode変換を行うか (true / false) false
characterEncoding 文字コード変換を何で扱うか (useUnicodeが選択されている必要あり) 無し

DB サーバの文字コード設定

つづいてまた DB サーバまわり。
DB サーバの文字コード設定は、rundeck の初回起動時前に必ず確認すること!
rundeck は、初回起動時に rundeck スキーマ配下に自動で rundeck が動くためのテーブル (ジョブ設定や実行ログなどを保存するもの) が作成されるため、 初回起動時の DB サーバの文字コードが latin とかになっているとこれらのテーブルも文字コードが latin で作成されてしまい、日本語入力できなくなってしまう。。
rundeck 初回起動後に文字コードを utf8 に設定しても作成されてしまったテーブルの文字コードは変わらないので、ALTER で文字コードを変更するか、 rundeck スキーマ下のテーブルをすべて drop して再度起動するかする必要がある。
( 全テーブル ALTER 実行したけどめんどくさすぎたので drop -> 再起動のほうがおすすめ)

まとめ

書いてみたらすべて DB 設定まわりだったしちゃんと設定してたらすぐ気づいたことだった。。
もう書いたので忘れないぞ!