Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://rollinglinux.blog.fc2.com/tb.php/6-b97199f1

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

CentOS 6.5でserverspecサーバ構築 その2

前日までの所で、serverspecのインストールと、試験を実施するユーザのssh周りの設定を実施しました。
(久しぶりのブログで乱れたり、眠気でグダグダだった所を少々修正しました)

serverspecはホスト単位での試験がベースになっているようです。
まずは試験対象機に試験を実施できる所を目指します。

試験対象機の情報は以下の通りです。
ホスト名:test01.test.local
OS:CentOS 6.5
IP:192.168.11.50
ユーザ:srvspec
このユーザはsudoで特権が必要なコマンドを実行できる権限が必要です。

serverspecサーバの試験実施ユーザで、serverspecを初期化します。

$ serverspec-init
Select OS type:

  1) UN*X
  2) Windows

Select number: 1

Select a backend type:

  1) SSH
  2) Exec (local)

Select number: 1

Vagrant instance y/n: n
Input target host name: test01.test.local
 + spec/
 + spec/test01.test.local/
 + spec/test01.test.local/sample_spec.rb
 + spec/spec_helper.rb
 + Rakefile
 + .rspec
$

この時点で、試験対象ホストのサンプルテストコード(apacheの試験)が作成されます。
その試験を実施するには
$ rake spec
と実施するだけですが、エラーが発生します。

実行までに発生したエラーのまとめ
■エラーメッセージ
Wrong sudo password! Please confirm your password.


実行例
$ rake spec
/usr/bin/ruby -I/usr/lib/ruby/gems/1.8/gems/rspec-support-3.1.2/lib:/usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/lib /usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/exe/rspec --pattern spec/test01.test.local/\*_spec.rb
Wrong sudo password! Please confirm your password.
/usr/bin/ruby -I/usr/lib/ruby/gems/1.8/gems/rspec-support-3.1.2/lib:/usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/lib /usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/exe/rspec --pattern spec/test01.test.local/\*_spec.rb failed
$

チュートリアルにも書かれていますが。試験対象機のユーザでsudoを使用する際にパスワードが必要な場合にこのエラーが発生します。

$ SUDO_PASSWORD=xxxxxxxx rake spec
とするか
$ ASK_SUDO_PASSWORD=1 rake spec
sudoパスワードの入力プロンプトが表示されます。

$ ASK_SUDO_PASSWORD=1 rake spec
/usr/bin/ruby -I/usr/lib/ruby/gems/1.8/gems/rspec-support-3.1.2/lib:/usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/lib /usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/exe/rspec --pattern spec/test01.test.local/\*_spec.rb
Enter sudo password:

Package "openssh-server"
  should be installed

Service "sshd"
  should be enabled
  should be running

Port "22"
  should be listening

Finished in 0.19156 seconds (files took 14.59 seconds to load)
4 examples, 0 failures
$

■エラーメッセージ
/home/srvspec/spec/spec_helper.rb:1:in `require': no such file to load -- serverspec (LoadError)


実行例
$ rake spec
/usr/bin/ruby -I/usr/lib/ruby/gems/1.8/gems/rspec-support-3.1.2/lib:/usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/lib /usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/exe/rspec --pattern spec/test01.test.local/\*_spec.rb
/home/srvspec/spec/spec_helper.rb:1:in `require': no such file to load -- serverspec (LoadError)
        from /home/srvspec/spec/spec_helper.rb:1
        from /home/srvspec/spec/test01.test.local/sample_spec.rb:1:in `require'
中略
        from /usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/exe/rspec:4
/usr/bin/ruby -I/usr/lib/ruby/gems/1.8/gems/rspec-support-3.1.2/lib:/usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/lib /usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/exe/rspec --pattern spec/test01.test.local/\*_spec.rb failed
$

対処方法
spec/test01.test.local/sample_spec.rbの先頭に「require 'rubygems'」を記述します。

記述例
require 'rubygems'
require 'spec_helper'

■エラーメッセージ
Please write "set :request_pty, true" in your spec_helper.rb or other appropriate file.


実行例
$ rake spec
/usr/bin/ruby -I/usr/lib/ruby/gems/1.8/gems/rspec-support-3.1.2/lib:/usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/lib /usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/exe/rspec --pattern spec/test01.test.local/\*_spec.rb

Please write "set :request_pty, true" in your spec_helper.rb or other appropriate file.

/usr/bin/ruby -I/usr/lib/ruby/gems/1.8/gems/rspec-support-3.1.2/lib:/usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/lib /usr/lib/ruby/gems/1.8/gems/rspec-core-3.1.7/exe/rspec --pattern spec/test01.test.local/\*_spec.rb failed
$

対処方法
メッセージの通りでspec/spec_helper.rbに「set :request_pty, true」を記述します。
って言われてもなので。以下の所に追記しました。
$ grep -B 5 -A 5 request_pty spec/spec_helper.rb

options[:user] ||= Etc.getlogin

set :host,        options[:host_name] || host
set :ssh_options, options
set :request_pty, true

# Disable sudo
# set :disable_sudo, true

$
このエラーは試験対象機(この場合はCentOS6.5)のsudoersに「Defaults requiretty」が設定されているからで、
Defaults:%wheel    !requiretty
を設定することでも解消します。
ただしサーバ側の設定を試験の都合で変更するのは...と言う考え方もあると思います。

その他
serverspec-initで作成されるサンプルがapacheのテストコードになっています。接続に成功してもapacheの設定が終わっていないとテストが成功しません。
ssh serverのテストコードにしておいた方が成功感が高いかもしれません。


後はテストコードをどう作るかですが。。。


スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://rollinglinux.blog.fc2.com/tb.php/6-b97199f1

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。