LoginSignup
26
26

More than 5 years have passed since last update.

Serverspecのインストールからテスト実行まで

Posted at

想定としては、

  • 192.168.1.18みたいなネットワーク上のサーバーがあってそれがテストの対象
  • 自分のPC(vagrantでCENTOSを入れて、そこでrubyが動いている状態)

サーバー:192.168.1.18
ユーザー:serverspec

自分のPC:127.0.0.1:2222
ユーザー:vagrant

まず自分のPCにログインして公開鍵を作成する。

cd ~/.ssh/
ssh-keygen -t dsa

ここは何も入力せずにエンターキー3回

id_dsa
id_dsa.pub

の2つのファイルが生成される

次にサーバーにログインして、

mkdir .ssh
chmod 700 .ssh
cd .ssh/

この.sshディレクトリに先ほど作成したid_dsa.pubをWinSCP等を用いてコピーする。
コピーしたら、以下を実行。

cat id_dsa.pub >> authorized_keys
chmod 600 authorized_keys

id_dsa.pubは消してよい。

引き続きルートになってsshの設定を変更する。

su -
cd /etc/ssh/
vim sshd_config

以下2か所のコメントアウトを外す。

#PubkeyAuthentication yes
#AuthorizedKeysFile   .ssh/authorized_keys

保存したら、sshdを再起動。

service sshd restart

いったん自分のPCへ戻る。sshのコンフィグファイルを作成する。

cd ~/.ssh/
vim config

以下を記入して保存

Host my-host
  HostName 192.168.1.18
  Port 22
  User serverspec
  IdentityFile ~/.ssh/id_dsa

ここでssh接続をテストしてみる。

ssh my-host

でつながればOK.

再び開発サーバーにログインする。
ルートになって、sudo設定を行う。

su -
visudo

viの編集画面になるので、以下を追記

serverspec   ALL=(ALL)       ALL

ここで一旦ルートを抜ける

適当なディレクトリを作ってそこで作業する。

cd /share
mkdir serverspec
cd serverspec
vim Gemfile

以下を書き込みます。

source 'https://rubygems.org'

gem 'serverspec'
gem 'rake'
gem 'highline'

保存して、以下実行。

bundle

ここでbundleが見つからなかった場合は

gem install bundle

続いて以下実行。

bundle exec 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: my-host
     + spec/
     + spec/my-host/
     + spec/my-host/sample_spec.rb
     + spec/spec_helper.rb

これでspec/以下にテスト用のファイルが生成される。ので、以下編集

vim spec/my-host/sample_spec.rb

以下の一行を追加。(環境によっては不要な場合もある)

set :request_pty, true

最後に以下でテスト実行

ASK_SUDO_PASSWORD=1 bundle exec rake spec

途中で

Enter sudo password:

と聞かれるのでユーザーserverspecのパスワードを入れる。

テスト結果が出れば成功。

    Package "httpd"
      should be installed

    Service "httpd"
      should be enabled
      should be running

    Port "80"
      should be listening

    Finished in 1.03 seconds (files took 9.88 seconds to load)
    4 examples, 0 failures

毎回パスワード入れたくない場合は以下の書き方で実行すればよい。

SUDO_PASSWORD=password bundle exec rake spec

テストの書き方は以下参照。
http://serverspec.org/resource_types.html

追記:複数サーバーをリストで指定してそれぞれにパラメータを渡してテストする方法は以下URL参照のこと
http://ex-cloud.jp/techblog/?p=699

26
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
26