2013年10月18日金曜日

Jenkinsを別サーバーに移行してみた! #jenkinsci


自分の環境で動かしているJenkinsを本番サーバーに移行したので、その時のメモです。

もくじ


前提条件


  • Jenkinsをrpmでインストールしている

rpmでインストールすると、JENKINS_HOMEは/var/lib/jenkinsになっているはず。

流れ


  • バックアップ
  • 移行先にJenkinsを入れる
  • データの復元
  • SELinuxの調整

作業

バックアップ


バックアップはいろいろ試すことになったのですが、結果手動がベスト!ということになりました。
いくつか検証結果の紹介


プラグイン名特長評価
Backup Pluginメリット:ちゃんと取れる
デメリット:スケジュール出来ない、シンボリックリンクの扱いがおかしい
× メンテナンスも止まっているので使わない!
thinBackupメリット:動作が速い
デメリット:とっている箇所が少ない、1.7.4より前のバージョンで動作がおかしかった
手動(スクリプト)メリット:プラグインが対応していない部分が取れる
デメリット:スクリプトを自分で書かなくてはいけない

上記に記載した通りでした。

Backup Plugin

Backup Plugin」はメンテナンスされておらず、プラグインページにも「他を使いましょう!」って書いてあります。

また、使うとシンボリックリンクの扱いがリンクをたどってファイル・フォルダを作成してしまうので、のちのちジョブ実行でハマります。

jenkinsci/backup-plugin ここのソース追ってもらったりしました。

thinbackup

thinbackup」は代替えとして紹介されていたので、使ったのですが 旧バージョンでうまく動かなかったところ、バージョンアップして動くようになりました。

ただ、バックアップして欲しいところが既定の場所ではなかったので、あきらめました・・・。
最低限のバックアップには有用だと思います!

手動(スクリプト)

手動(スクリプト)」ですが、JENKINS_HOME全部取るのは負けている気がするので嫌だったのですが・・・

結局「workspace」を除くすべてを取ることにしました。

cd ${JENKINS_HOME}
tar zcf /opt/jenkins-backup/jenkins-`date +%Y%m%d_%H%M`.tar.gz --exclude ./workspace . 

適当なスクリプトです・・・

移行先にJenkinsを入れる

yumでインストールしました!
yumでJenkinsをインストールする : 元うなぎ屋

この時、以下は入れておきましょう。

Java
git

依存関係じゃないから、ハマった・・・

データの復元

移行先に、データ転送
scp jenkins-20131018_1613.tar.gz 192.168.1.1:.

展開
cd /var/lib/jenkins
tar zxvf ~/jenkins-20131018_1613.tar.gz    

Jenkins再起動

SELinuxの調整

自分の環境特有ですが、

ユーザー → Apache → リバースプロキシ・LDAP認証 → Jenkins
と、なっているためSELinuxではじかれていました。

[Fri Oct 11 19:19:52 2013] [error] (13)Permission denied: proxy: HTTP: attempt to connect to 127.0.0.1:8080 (localhost) failed

対処法:
/usr/sbin/setsebool -P httpd_can_network_connect true

これで、リバースプロキシが通るようになります。

まとめ


  • 意外とJenkinsのバックアップについては詳細な情報が少ない(JENKINS_HOME取るってだけ)
  • もっと詳しく調査したかったけど、結局私もJENKINS_HOME取ることになった
  • JENKINSの運用について、いろいろ意見交換したいと思った今日この頃でした・・・(;-o-)ノ◇ミ

参考になれば幸いです。

参考サイト

Jenkinsサーバを移行する - 優々自適

tarコマンドで指定ファイルや指定ディレクトリを処理対象外にする方法 - FreeBSD初心者運用日記 - freebsdグループ

Jenkins


Zenback