SlideShare a Scribd company logo
Yggdrasil(ゆぐどらしる)
~ サーバ運用の No Ticket, No Work ~
shinagawa.redmine 第5回勉強会LT
2013.06.29 @tkusukawa
自己紹介: @tkusukawa
くすかわ と言います
サラリーマンです
WorkTimeという
工数入力のRedmineプラグインを
公開しています
WikiListsという
チケットの検索結果一覧を
Wikiやチケットに表示するマクロの
プラグインを公開しています
サーバ運用に使えるツール
をご紹介します。
Redmineによる運用ということで、
Linuxサーバの
設定変更
どうしてます?
とつぜんですが、
ちゃんと
後で変更点が解るように
してますか?
日付つきのファイル名に
コピーします?
日付つきのファイルで
いっぱいになりませんか?
ファイルコピーしないで
やっちまう奴いませんか?
そんなあなたに朗報です!
Yggdrasil(ゆぐどらしる)で
設定ファイルを
Subversion管理できます。
インストール方法
① Subversionを入れます
② Ruby(gem)を入れます
② # gem install yggdrasil
→ https://rubygems.org/gems/yggdrasil
gem ygg
で検索して下さい。
たぶん上位3つぐらいには出てきます。
初期化:リポジトリ接続
(スタンドアローン編)
$ ygg init --repo private
↑ リポジトリの準備が要らない。お手軽。
SVNリポジトリをローカルに自動作成します
~/.yggdrasil/private_repo
初期化:リポジトリ接続 (集中管理編)
【SVNリポジトリの準備】
→ サーバーを起動
【各OSノードでの初期化】
$ ygg init --repo svn://~/svn/hostA/
svn://~/svn/hostA/etc/~
/var/~
/~
/hostB/~
/hostC/~
/hostD/~
SVNリポジトリ
全サーバの
設定履歴
このリポジトリは
全サーバを体現する
巨大な木になる。
→ これはまさに世界樹!
英語にすると
Yggdrasil(ゆぐどらしる)
使い方① 管理対象へのファイル追加
$ ygg add [設定ファイル...]
svn addと同じイメージ
最後に後述のコミットが必要
使い方② 変更されたファイルの確認
$ ygg check
→ 変更項目の一覧を表示
→ 番号[enter]でdiffを表示
→ Y[enter] で全部のdiffを表示
→ n[enter]で終了
使い方③ 変更のコミット
$ ygg commit –m 'メッセージ'
→ コミット項目の一覧が表示される
→ 番号[enter]でdiffを表示
→ Y[enter] でコミット実施
特定のファイルやフォルダを指定して
コミットすることも出来ます
使い方 の 使い方
$ ygg help
→ サブコマンド一覧を表示
add check cleanup commit diff help
init list log update version
$ ygg help [サブコマンド]
→ サブコマンドの説明を表示
yggdrasilの運用
Yggdrasilの運用① どの設定を管理するか
管理したいファイルはいつも決まっていて沢山ある。
ので、下記をコピペ入力して一気にAddがお勧め
# cat <<EOF | while read f; do ls $f >/dev/null 2>&1 && ygg add $f ; done
/etc/aliases
/etc/cron.deny
/etc/crontab
/etc/fstab
/var/spool/cron/*
...
EOF
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/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/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
EOF
Yggdrasilの運用② コミット忘れ防止
ついコミットするのを忘れちゃう
→ 深夜に cron で ygg check して
メール周知することをお勧めします
→ コミット漏れが無い状態を
キープすることが重要
Yggdrasilの運用③ Redmineと接続
リポジトリをRedmineに設定して
コミットMsgに必ずチケット番号を書くルール
No Ticket, No Commit! の運用がお勧め
ダマで設定を変えると翌朝メールが飛ぶので、
その日の内に必ずコミットしなければならない。
つまりチケット起票が無いと設定変更できない!
→ No Ticket, No Work の習慣が醸成される
Yggdrasilの効能
自分が何をやったのかを確実に把握できる
→ 修正もれ/一時的な修正の戻し忘れに気付ける
過去に遡ってその日どのサーバに変更があったか
が Subversionのログで手に取るように解る
セッティングルールの違反を
全体ツリーのgrepで探せる
開発者募集中
https://rubygems.org/gems/yggdrasil

More Related Content

Yggdrasil(ゆぐどらしる) ~ サーバ運用のNo Ticket, No Work ~