Click here to load reader
Upload
sho-hashimoto
View
2.378
Download
0
Embed Size (px)
Citation preview
serverspecみんなで集めて(゜Д゜)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?
橋本 将
serverspecみんなで集めて(゜Д゜)ウマー?
serverspecというgemで遊んでみました
● できる事● 構築済みサーバをRSpecでテスト
● 参考URL● http://serverspec.org● http://mizzy.org/blog/2013/03/24/3/
serverspecみんなで集めて(゜Д゜)ウマー?
導入
● おもむろに以下を実行
$ gem install serverspec$ serverspec-init※以下、出力は加工したもの※Select a backend type: 2(local)Select OS type of target host: 3(Debian)
serverspecみんなで集めて(゜Д゜)ウマー?
ファイル構成
● Rakefile● spec/spec_helper.rb
● 接続の仕方(SSHなど)やOS(Debianなど)を変更する場合はここ
● あるいはこのファイルだけ削除して再init(作成済みのspecはそのまま)
● spec/<ホスト名>/<なにか名前>_spec.rb● ntpd_spec.rbやhttpd_spec.rbなど好みの単位で分けてspecを作成
serverspecみんなで集めて(゜Д゜)ウマー?
specの作成
● こんな記述を追記● 環境によってうまいことやってくれる● 詳細は後述
describe 'httpd' do it { should be_installed } it { should be_enabled } it { should be_running } end
serverspecみんなで集めて(゜Д゜)ウマー?
実行
● 以下のコマンドを実行● 構築済みのサーバのテスト!!!● 超age
$ rake spec/usr/bin/ruby -S rspec spec/localhost/httpd_spec.rb...
Finished in 0.99715 seconds3 examples, 0 failures
serverspecみんなで集めて(゜Д゜)ウマー?
httpd_spec.rbの詳細(1)
● should be_installed● 主語がインストール済みを期待● Debianならdpkg -s <主語>● Redhatならrpm -q <主語>● よしなにしてくれる
serverspecみんなで集めて(゜Д゜)ウマー?
httpd_spec.rbの詳細(2)
● should be_enabled● 主語が有効(ブート時に起動する)事を期待● Debianならls /etc/rc3.d/ | grep <主語>● Redhatならchkconfig --list <主語> | grep 3:on● よしな(ry
serverspecみんなで集めて(゜Д゜)ウマー?
httpd_spec.rbの詳細(3)
● その他● http://serverspec.org/matchers.html● ファイルがsymlinkか見たり● iptablesチェックしたり● ファイルの中身見たり● 色々ある
● spec_helper.rbについても省略
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
serverspecみんなで集めて(゜Д゜)ウマー?
いくつかピックアップ
● bootlogd_debian_spec.rb● users_spec.rb● ntpd_spec.rb● p2p_spec.rb
serverspecみんなで集めて(゜Д゜)ウマー?
bootlogd_debian_spec.rb
● /var/log/bootに起動時のログを保存する設定の確認
describe '/etc/default/bootlogd' do it { should contain "BOOTLOGD_ENABLE=Yes" }end
serverspecみんなで集めて(゜Д゜)ウマー?
users_spec.rb
● ユーザ設定の確認
me = ENV["USER"]describe me do it { should_not belong_to_group me } it { should belong_to_group 'adm' }end
serverspecみんなで集めて(゜Д゜)ウマー?
ntpd_spec.rb
● NTPまわりの設定確認● NTPの同期が継続している事を確認describe 'ntp' do it { should be_installed }end...describe 'ntpq -pn' do it { should get_stdout /^\*\d/ }end
serverspecみんなで集めて(゜Д゜)ウマー?
p2p_spec.rb
● P2P関係のソフトウェアがインストールされていない事を確認
● これ関係は深くやるなら別のツールがよい● 簡単なチェックをついでにする程度
describe 'amule' do it { should_not be_installed }end
describe 'azureus' do it { should_not be_installed }end
serverspecみんなで集めて(゜Д゜)ウマー?
サンプルは以上
● 超簡単● コードも少ないので把握も簡単(serverspecも含めて)
serverspecみんなで集めて(゜Д゜)ウマー?
うれしい事
● ヒューマンエラー削減● 経験に頼らないチェックが可能
● chef的なツールを使ってなくても導入可● プロジェクト間の共有のしやすさ
● 使いまわしやすい● 集まるほどうれしい● 選ぶだけで終わる可能性すらある
serverspecみんなで集めて(゜Д゜)ウマー?
まだ気をつける必要がある事
● アップデート回数が多い● 少し注意● みんなで枯らして使いましょう
serverspecみんなで集めて(゜Д゜)ウマー?
以上です
● ご清聴ありがとうございました● 何かいいアイディアかspecがあればください