19

Click here to load reader

serverspecみんなで集めて(゚Д゚)ウマー?

Embed Size (px)

Citation preview

Page 1: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

serverspecみんなで集めて(゚Д゚)ウマー?

橋本 将

Page 2: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

serverspecというgemで遊んでみました

● できる事● 構築済みサーバをRSpecでテスト

● 参考URL● http://serverspec.org● http://mizzy.org/blog/2013/03/24/3/

Page 3: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

導入

● おもむろに以下を実行

$ gem install serverspec$ serverspec-init※以下、出力は加工したもの※Select a backend type: 2(local)Select OS type of target host: 3(Debian)

Page 4: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

ファイル構成

● Rakefile● spec/spec_helper.rb

● 接続の仕方(SSHなど)やOS(Debianなど)を変更する場合はここ

● あるいはこのファイルだけ削除して再init(作成済みのspecはそのまま)

● spec/<ホスト名>/<なにか名前>_spec.rb● ntpd_spec.rbやhttpd_spec.rbなど好みの単位で分けてspecを作成

Page 5: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

specの作成

● こんな記述を追記● 環境によってうまいことやってくれる● 詳細は後述

describe 'httpd' do it { should be_installed } it { should be_enabled } it { should be_running } end

Page 6: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

実行

● 以下のコマンドを実行● 構築済みのサーバのテスト!!!● 超age

$ rake spec/usr/bin/ruby -S rspec spec/localhost/httpd_spec.rb...

Finished in 0.99715 seconds3 examples, 0 failures

Page 7: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

httpd_spec.rbの詳細(1)

● should be_installed● 主語がインストール済みを期待● Debianならdpkg -s <主語>● Redhatならrpm -q <主語>● よしなにしてくれる

Page 8: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

httpd_spec.rbの詳細(2)

● should be_enabled● 主語が有効(ブート時に起動する)事を期待● Debianならls /etc/rc3.d/ | grep <主語>● Redhatならchkconfig --list <主語> | grep 3:on● よしな(ry

Page 9: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

httpd_spec.rbの詳細(3)

● その他● http://serverspec.org/matchers.html● ファイルがsymlinkか見たり● iptablesチェックしたり● ファイルの中身見たり● 色々ある

● spec_helper.rbについても省略

Page 10: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

試しにspecをいくつか書いてみた

● 後で以下にpushします● https://github.com/sho-h/serverspec-examples.git

$ ls spec/localhostbootlogd_debian_spec.rb mysql_debian_spec.rb postgresql_debian_spec.rbcron_debian_spec.rb ntpd_spec.rb ssh_debian_spec.rb hosts_spec.rbp2p_spec.rb users_spec.rbhttpd_spec.rb postgresql_redhat_spec.rb

Page 11: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

いくつかピックアップ

● bootlogd_debian_spec.rb● users_spec.rb● ntpd_spec.rb● p2p_spec.rb

Page 12: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

bootlogd_debian_spec.rb

● /var/log/bootに起動時のログを保存する設定の確認

describe '/etc/default/bootlogd' do it { should contain "BOOTLOGD_ENABLE=Yes" }end

Page 13: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

users_spec.rb

● ユーザ設定の確認

me = ENV["USER"]describe me do it { should_not belong_to_group me } it { should belong_to_group 'adm' }end

Page 14: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

ntpd_spec.rb

● NTPまわりの設定確認● NTPの同期が継続している事を確認describe 'ntp' do it { should be_installed }end...describe 'ntpq -pn' do it { should get_stdout /^\*\d/ }end

Page 15: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

p2p_spec.rb

● P2P関係のソフトウェアがインストールされていない事を確認

● これ関係は深くやるなら別のツールがよい● 簡単なチェックをついでにする程度

describe 'amule' do it { should_not be_installed }end

describe 'azureus' do it { should_not be_installed }end

Page 16: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

サンプルは以上

● 超簡単● コードも少ないので把握も簡単(serverspecも含めて)

Page 17: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

うれしい事

● ヒューマンエラー削減● 経験に頼らないチェックが可能

● chef的なツールを使ってなくても導入可● プロジェクト間の共有のしやすさ

● 使いまわしやすい● 集まるほどうれしい● 選ぶだけで終わる可能性すらある

Page 18: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

まだ気をつける必要がある事

● アップデート回数が多い● 少し注意● みんなで枯らして使いましょう

Page 19: serverspecみんなで集めて(゚Д゚)ウマー?

serverspecみんなで集めて(゜Д゜)ウマー?

以上です

● ご清聴ありがとうございました● 何かいいアイディアかspecがあればください