自分の環境で動かしている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
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 |
佐藤 聖規,和田 貴久,河村 雅人,米沢 弘樹,山岸 啓 技術評論社 2011-11-11