SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
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 seconds
3 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/localhost
bootlogd_debian_spec.rb mysql_debian_spec.rb
postgresql_debian_spec.rb
cron_debian_spec.rb ntpd_spec.rb
ssh_debian_spec.rb hosts_spec.rb
p2p_spec.rb users_spec.rb
httpd_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があればくださ
い

Mais conteúdo relacionado

Mais procurados

initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動Takashi Takizawa
 
Mongo dbのgridfsについて
Mongo dbのgridfsについてMongo dbのgridfsについて
Mongo dbのgridfsについてMasahiro Saito
 
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)Iwana Chan
 
ノンプログラマのためのウェブサーバ入門
ノンプログラマのためのウェブサーバ入門	ノンプログラマのためのウェブサーバ入門
ノンプログラマのためのウェブサーバ入門 Atsu Yamaga
 
Webサーバ勉強会#1_prefork_8-15
Webサーバ勉強会#1_prefork_8-15Webサーバ勉強会#1_prefork_8-15
Webサーバ勉強会#1_prefork_8-15mashan94
 
Varnish 4.0 Release Party in Tokyo発表資料
Varnish 4.0 Release Party in Tokyo発表資料Varnish 4.0 Release Party in Tokyo発表資料
Varnish 4.0 Release Party in Tokyo発表資料Iwana Chan
 
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門Takashi Takizawa
 
Webサーバ勉強会03
Webサーバ勉強会03Webサーバ勉強会03
Webサーバ勉強会03oranie Narut
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalkBIGLOBE Tech Talk
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようmax747
 
HTTP/2 in nginx(2016/3/11 社内勉強会)
HTTP/2 in nginx(2016/3/11 社内勉強会)HTTP/2 in nginx(2016/3/11 社内勉強会)
HTTP/2 in nginx(2016/3/11 社内勉強会)Yoko TAMADA
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalkBIGLOBE Tech Talk
 
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたWebサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたdo_aki
 
VarnishではじめるESI
VarnishではじめるESIVarnishではじめるESI
VarnishではじめるESIIwana Chan
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
WebサーバのチューニングYu Komiya
 

Mais procurados (20)

initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
Mongo dbのgridfsについて
Mongo dbのgridfsについてMongo dbのgridfsについて
Mongo dbのgridfsについて
 
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
 
ノンプログラマのためのウェブサーバ入門
ノンプログラマのためのウェブサーバ入門	ノンプログラマのためのウェブサーバ入門
ノンプログラマのためのウェブサーバ入門
 
Webサーバ勉強会#1_prefork_8-15
Webサーバ勉強会#1_prefork_8-15Webサーバ勉強会#1_prefork_8-15
Webサーバ勉強会#1_prefork_8-15
 
Varnish 4.0 Release Party in Tokyo発表資料
Varnish 4.0 Release Party in Tokyo発表資料Varnish 4.0 Release Party in Tokyo発表資料
Varnish 4.0 Release Party in Tokyo発表資料
 
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門
 
Lagopus 0.2
Lagopus 0.2Lagopus 0.2
Lagopus 0.2
 
Puppetのススメ
PuppetのススメPuppetのススメ
Puppetのススメ
 
Webサーバ勉強会03
Webサーバ勉強会03Webサーバ勉強会03
Webサーバ勉強会03
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
 
HTTP/2 in nginx(2016/3/11 社内勉強会)
HTTP/2 in nginx(2016/3/11 社内勉強会)HTTP/2 in nginx(2016/3/11 社内勉強会)
HTTP/2 in nginx(2016/3/11 社内勉強会)
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
 
nginx入門
nginx入門nginx入門
nginx入門
 
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたWebサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
 
VarnishではじめるESI
VarnishではじめるESIVarnishではじめるESI
VarnishではじめるESI
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 
Ansible入門...?
Ansible入門...?Ansible入門...?
Ansible入門...?
 

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

TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇Manabu Ori
 
RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~Kazuya Wada
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE辰徳 斎藤
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理博文 斉藤
 
〜Apache Geode 入門 Multi-site(WAN)構成による クラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成による クラスター連携Akihiro Kitada
 
Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)Kimiyuki Yamauchi
 
Aerospike v3 install
Aerospike v3 installAerospike v3 install
Aerospike v3 installMakoto Uehara
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみようMasahiko Hashimoto
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話Kazuya Wada
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1Kotaro Noyama
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例Koichi Shimozono
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツールtotty jp
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_BetaKohei KaiGai
 

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

実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇
 
WindowsでMySQL入門
WindowsでMySQL入門WindowsでMySQL入門
WindowsでMySQL入門
 
RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
 
お手軽並列処理
お手軽並列処理お手軽並列処理
お手軽並列処理
 
〜Apache Geode 入門 Multi-site(WAN)構成による クラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成による クラスター連携
 
Fluentd casual
Fluentd casualFluentd casual
Fluentd casual
 
Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)Lamp環境&Wordpress設定(debian)
Lamp環境&Wordpress設定(debian)
 
Aerospike v3 install
Aerospike v3 installAerospike v3 install
Aerospike v3 install
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話
 
OpenStack Grizzly構築手順書
OpenStack Grizzly構築手順書OpenStack Grizzly構築手順書
OpenStack Grizzly構築手順書
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 
Tokyo.R#16 wdkz
Tokyo.R#16 wdkzTokyo.R#16 wdkz
Tokyo.R#16 wdkz
 
ICHIGEKI-MT 2015/03/14
ICHIGEKI-MT 2015/03/14ICHIGEKI-MT 2015/03/14
ICHIGEKI-MT 2015/03/14
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
 

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