« yggdrasil 0.0.17 released. | トップページ | ハイビジョンのホームビデオをREGZAで見るときのメモ »

2013年9月22日 (日)

ALMiniumによる yggdrasilサーバの構築

Yggdrasil( https://github.com/tkusukawa/yggdrasil/wiki )はLinuxサーバの設定ファイルをSubversionで管理する試みです。

最小限の構成はRubyとSubversionがインストールされていれば動作するのですが、 多数のLinuxサーバを管理する場合はRedmineとJenkinsとを組み合わせて運用するととても便利です。

このSubversion、Redmine、Jenkinsのシナジー効果は本当に素晴らしいので、 多くの人に是非一度使ってみて欲しいところなのですが、 RedmineとJenkinsはRuby,Java,DB,メール等いろいろあってインストールが難しく、 なかなか「気軽にやってみて!」というわけにいきませんでした。
それが、ALMiniumによって、 Subversion、Redmine、Jenkinsが全てきちんと連係された形でインストールできるようになりました。 ALMiniumはRedmineを含む開発環境インストーラであり、 shinagawa.redineの第2回勉強会で紹介して頂いて知ってはいたのですが、 Jenkinsが含まれていることを知りませんでした。勿体ない。orz
早速ALMiniumをインストールしてYggdrasilサーバを設定してみたところ、 簡単に構成出来てしまいました。 Subversionのリポジトリ作成やそのユーザ管理もRedmineから設定出来る等、 ツール構成の利便性も抜群です! 自分で一から構築していては、この完成度には到達できないでしょう。
ということで、そのときの手順メモを下記に共有します。
●CentOS 6.2 を用意
サーバとして使うのでIPアドレスはDHCPではなく、固定にしておきます。
ここでは192.168.1.73にしました。
一応、yum updateをかけておきます。

● ALMiniumのインストール
Redmine+Subversion+Jenkinsが一気に入って超絶便利です。
# yum install git
# cd /root
# git clone https://github.com/alminium/alminium.git
# cd alminium
# ./smelt 
いくつか質問に答える。
→ ホスト名:192.168.1.73
→ メールシステム:自分のgmailアカウントを使いました。
→ httpsにする?:しない
→ jenkins入れる?:もちろん
→ SELinux切るけどいい?:いいよ

● Redmineの設定
0.ログイン
     http://192.168.1.73/ にアクセス
     右上の「ログイン」から ID/PW=admin/admin でログイン
1.全体設定
     左上メニュー「管理」→「設定」→「リポジトリ」
     →「参照用キーワード」に「*」のみを設定
     (これでコミットメッセージに#数字があるだけでチケットとリンクします)
2.ユーザ作成
     左上メニュー「管理」→「ユーザ」→「新しいユーザー」で必要なだけユーザを追加
     リポジトリ読取用にユーザ「yggdrasil」を作成しておく(メール通知:通知しない)
3.Redmineプロジェクトの作成
     左上メニュー「プロジェクト」→「新しいプロジェクト」
     → 名称:yggdrasil
     → 識別子:yggdrasil
     → SCM:Subversion
     → モジュール:リポジトリ、Hudson
     で「作成」
4.Redmineプロジェクトの設定
     「設定」→「メンバー」
     → 「新しいメンバー」の中からメンバーとロール「開発者」を選んで「追加」ボタン押下

● yggdrasilのセットアップ
1.gemでインストール
# gem install yggdrasil

2.yggdrasilサーバをjenkinsユーザで起動
# vi /etc/passwd
→ jenkinsの行の最後(ログインシェル)を/bin/bashに変更して保存
# su - jenkins
$ yggserve init --port 4000 --repo 'http://192.168.1.73/svn/yggdrasil/{host}' --ro-username yggdrasil --ro-password ********
$ yggserve daemon
$ pgrep yggserve   ←プロセス番号が返ってくればOK
$ exit

<以下のyggdrasilの設定は各サーバで実行>
3.subversionがパスワードを記憶しないように設定(お好みで)
# svn --version
# rm -fr ~/.subversion/auth/svn.simple
# vi ~/.subversion/config
→ [auth]の中の store-auth-creds = no の行のコメントを外す

4.yggdrasilクライアントの初期化
# ygg init --server 192.168.1.73:4000
ホスト名のフォルダを作るか聞いてくる→ 「Y」
ID/PWはRedmineに登録したものが使えます
RedmineのYggdrasilPJのリポジトリでフォルダが作成されていることを確認

5.チェッカースクリプトの設定(お好みで)
チェッカースクリプトはサーバの状態変化を検知するためのもので、
スクリプトの実行結果(標準出力)がSubversionに登録され、
履歴管理されます。
例えば、過去何月何日にマウント状態はどうだった、とか、
gem のバージョンは何だったか、等を調べられるようになります。
(ちゃんとコミットされていれば)

【初回のみ】# svn mkdir http://192.168.1.73/svn/yggdrasil/_checker -m 'mkdir _checker'
# cd ~/.yggdrasil/checker
# svn co http://192.168.1.73/svn/yggdrasil/_checker .

【初回のみ】# vi mount
下記を記入
mount |
grep -v '(.*soft.*)' |
grep -v '(.*bind.*)' |
egrep -v '^sunrpc' |
LC_ALL=C sort

【初回のみ】# vi chkconfig
下記を記入
LC_ALL=C chkconfig --list

【初回のみ】# vi gem_list
下記を記入
gem list

【初回のみ】# vi route
下記を記入
route

【初回のみ】# vi rpm
下記を記入
rpm -qa |
LC_ALL=C sort

【初回のみ】# chmod +x mount chkconfig gem_list route rpm
【初回のみ】# svn add *
【初回のみ】# svn ci -m 'add checker scripts'

6.コミット漏れチェックの定期実行
これによってチェック結果がyggdrasilサーバに通知されるようになります

# crontab -e
下記を追記(@@は00~59に間で適当に散らして設定)
@@ 4 * * * /usr/bin/ygg check --non-interactive >/dev/null 2>&1

7.各種設定ファイルをyggdrasilに登録

# cat <<EOF | while read f; do ls $f >/dev/null 2>&1 && ygg add $f ; done
/etc/aliases
/etc/auto.automnt
/etc/auto.master
/etc/auto.misc
/etc/auto.net
/etc/cron.deny
/etc/crontab
/etc/exports
/etc/fstab
/etc/group
/etc/gshadow
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/inittab
/etc/login.defs
/etc/logrotate.conf
/etc/modprobe.conf
/etc/ntp.conf
/etc/nscd.conf
/etc/nsswitch.conf
/etc/passwd
/etc/resolv.conf
/etc/shadow
/etc/sudoers
/etc/syslog.conf
/etc/wgetrc
/etc/xinetd.conf
/etc/yum.conf
/etc/chroot_list
/etc/rc.local
/etc/shadow-sudoers.asc
/etc/pam.d/*
/etc/sysconfig/i18n
/etc/sysconfig/network
/etc/sysconfig/static-routes
/etc/sysconfig/iptables*
/etc/sysconfig/network-scripts/ifcfg-eth?
/etc/sysconfig/network-scripts/ifcfg-bond?
/etc/sysconfig/network-scripts/route-eth?
/etc/sysconfig/network-scripts/route-bond?
/etc/sysconfig/rhn/systemid
/etc/postfix/main.cf
/etc/postfix/master.cf
/etc/rc.d/rc
/etc/rc.d/rc.local
/etc/rc.d/rc.sysinit
/etc/rc.d/init.d/*
/etc/ssh/sshd_config
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/chroot_list
/var/spool/cron/*
/etc/logrotate.d/*
/etc/php.ini
/etc/php.d/*.ini
/etc/snmp/snmpd.conf
/etc/modprobe.d/*
EOF
8.コミット
# ygg ci -m 'add config files'
9.コミット漏れチェック # ygg c 試しに登録されている設定ファイルを修正して このコマンドを実行してみることで、 どのような振る舞いになるのかが理解できると思います。 10.コミット内容の確認 Redmineのリポジトリブラウザ http://192.168.1.73/projects/yggdrasil/repository でコミット内容を確認できます。 履歴や差分表示もサポートしていて、 Subversionに不慣れな方にも解りやすく、非常に便利です。 ● Jenkinsの設定 1.ログイン      http://192.168.1.73/jenkins/ にアクセス。      PW/ID=admin/admin 2.ジョブ作成      左メニュー「新規ジョブ作成」      → ジョブ名:yggdrasil      → 「フリースタイル・プロジェクトのビルド」にチェック 3.ジョブの設定      左上の表示が「Jenkins」→「yggdrail」になっていることを確認し、      左メニューの「設定」      → プロジェクト名:yggdrasil      → Assign Redmine project: yggdrasil      → ソースコード管理:なし      → ビルド・トリガ:「定期的に実行」      → → スケジュール:「30 5 * * *」      → ビルド「ビルド手順の追加」→「シェルの実行」      →→ シェルスクリプトに下記を記入 ------------ #!/bin/bash echo date # 監視ノード数の確認 mv -f /var/lib/jenkins/.yggdrasil/results_list /var/lib/jenkins/.yggdrasil/results_list.last ls /var/lib/jenkins/.yggdrasil/results/ | sort > /var/lib/jenkins/.yggdrasil/results_list cnt=`wc -l < /var/lib/jenkins/.yggdrasil/results_list` echo '監視ノード数: '$cnt echo /usr/bin/yggserve results --expire 180 > /var/lib/jenkins/.yggdrasil/jenkins.out ret=$? sed -n -e '/^########/,/^\s*$/p' < /var/lib/jenkins/.yggdrasil/jenkins.out | sed -e 's/########/\n########/' > /var/lib/jenkins/.yggdrasil/jenkins.summary cat /var/lib/jenkins/.yggdrasil/jenkins.out echo echo '監視ノード増減:' diff /var/lib/jenkins/.yggdrasil/results_list.last /var/lib/jenkins/.yggdrasil/results_list | egrep '^<|^>' | sed -e 's/^</-/' | sed -e 's/^>/+/' echo echo '監視ノード一覧:' cat /var/lib/jenkins/.yggdrasil/results_list echo return $ret 2>&- || exit $ret ------------ 4.ジョブの実行確認      左メニュー「ビルド実行」を押下      → しばらくすると「ビルド履歴」に結果が表示される      (初回はいくつかNo such file or directory      が表示されますが問題ありません)

|
|

« yggdrasil 0.0.17 released. | トップページ | ハイビジョンのホームビデオをREGZAで見るときのメモ »

プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/533276/58246378

この記事へのトラックバック一覧です: ALMiniumによる yggdrasilサーバの構築:

« yggdrasil 0.0.17 released. | トップページ | ハイビジョンのホームビデオをREGZAで見るときのメモ »