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

24
Yggdrasil(ゆぐどらしる) サーバ運用の No Ticket, No Work shinagawa.redmine 5回勉強会LT 2013.06.29 @tkusukawa

description

Linuxサーバの設定ファイルをSubversionで管理するツールの紹介です。(shinagawa.redmine第5回勉強会LT) PDF: https://docs.google.com/file/d/0Bx6dl5vPWQszaHdpbHF2OU1ub2s

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

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

Yggdrasil(ゆぐどらしる) ~ サーバ運用の No Ticket, No Work ~ shinagawa.redmine 第5回勉強会LT

2013.06.29 @tkusukawa

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

自己紹介: @tkusukawa

くすかわ と言います

サラリーマンです

WorkTimeという 工数入力のRedmineプラグインを 公開しています

WikiListsという チケットの検索結果一覧を Wikiやチケットに表示するマクロの プラグインを公開しています

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

サーバ運用に使えるツール をご紹介します。

Redmineによる運用ということで、

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

Linuxサーバの 設定変更 どうしてます?

とつぜんですが、

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

ちゃんと 後で変更点が解るように してますか?

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

日付つきのファイル名に コピーします?

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

日付つきのファイルで いっぱいになりませんか?

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

ファイルコピーしないで やっちまう奴いませんか?

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

そんなあなたに朗報です!

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

Yggdrasil(ゆぐどらしる)で

設定ファイルを Subversion管理できます。

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

インストール方法

① Subversionを入れます

② Ruby(gem)を入れます

② # gem install yggdrasil

→ https://rubygems.org/gems/yggdrasil

gem ygg

で検索して下さい。

たぶん上位3つぐらいには出てきます。

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

初期化:リポジトリ接続 (スタンドアローン編) $ ygg init --repo private

↑ リポジトリの準備が要らない。お手軽。

SVNリポジトリをローカルに自動作成します

~/.yggdrasil/private_repo

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

初期化:リポジトリ接続 (集中管理編)

【SVNリポジトリの準備】

→ サーバーを起動

【各OSノードでの初期化】

$ ygg init --repo svn://~/svn/hostA/

svn://~/svn/hostA/etc/~ /var/~ /~ /hostB/~ /hostC/~ /hostD/~

SVNリポジトリ

全サーバの 設定履歴

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

このリポジトリは 全サーバを体現する 巨大な木になる。 → これはまさに世界樹! 英語にすると

Yggdrasil(ゆぐどらしる)

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

使い方① 管理対象へのファイル追加

$ ygg add [設定ファイル...]

svn addと同じイメージ 最後に後述のコミットが必要

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

使い方② 変更されたファイルの確認

$ ygg check

→ 変更項目の一覧を表示

→ 番号[enter]でdiffを表示

→ Y[enter] で全部のdiffを表示

→ n[enter]で終了

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

使い方③ 変更のコミット

$ ygg commit –m 'メッセージ'

→ コミット項目の一覧が表示される

→ 番号[enter]でdiffを表示

→ Y[enter] でコミット実施

特定のファイルやフォルダを指定して コミットすることも出来ます

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

使い方 の 使い方

$ ygg help

→ サブコマンド一覧を表示

add check cleanup commit diff help

init list log update version

$ ygg help [サブコマンド]

→ サブコマンドの説明を表示

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

yggdrasilの運用

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

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 ~

Yggdrasilの運用② コミット忘れ防止

ついコミットするのを忘れちゃう

→ 深夜に cron で ygg check して メール周知することをお勧めします

→ コミット漏れが無い状態を キープすることが重要

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

Yggdrasilの運用③ Redmineと接続

リポジトリをRedmineに設定して コミットMsgに必ずチケット番号を書くルール No Ticket, No Commit! の運用がお勧め

ダマで設定を変えると翌朝メールが飛ぶので、 その日の内に必ずコミットしなければならない。

つまりチケット起票が無いと設定変更できない! → No Ticket, No Work の習慣が醸成される

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

Yggdrasilの効能

自分が何をやったのかを確実に把握できる → 修正もれ/一時的な修正の戻し忘れに気付ける

過去に遡ってその日どのサーバに変更があったか が Subversionのログで手に取るように解る

セッティングルールの違反を 全体ツリーのgrepで探せる

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

開発者募集中 https://rubygems.org/gems/yggdrasil