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