1

この問題はおそらくserverspec サービス テストの複製であると思われますが、私の実行環境についてもう少し情報を含めます。

AWS 上の RHEL6 VM に対して実行された多数の成功した serverspec テストがあります。

ただし、「サービス」テストは be_enabled および be_running マッチャーで失敗するようです。

私のspec_helper.rbには次のものがあります:

set :os, :family => 'redhat', :release => '6', :arch => 'x86_64'

テスト用に serverspec と rspec の両方の構文を試しましたが、同じコマンドを実行すると両方とも失敗します。

describe service('ntpd') do
    it { should be_enabled }
    it { should be_running }
end

it "is running ntpd" do
    expect(service("ntpd")).to be_enabled
    expect(service("ntpd")).to be_running
end


Failure/Error: it { should be_enabled }
    expected Service "ntpd" to be enabled
    sudo -p 'Password: ' /bin/sh -c chkconfig\ --list\ ntpd\ \|\ grep\ 3:on

Failure/Error: it { should be_running }
    expected Service "ntpd" to be running
    sudo -p 'Password: ' /bin/sh -c service\ ntpd\ status

ただし、サーバー上でローカルに実行すると成功します。

$ sudo -p 'Password: ' /bin/sh -c chkconfig\ --list\ ntpd\ \|\ grep\ 3:on
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
$ echo $?
0

$ sudo -p 'Password: ' /bin/sh -c service\ ntpd\ status
ntpd (pid  1101) is running...
$ echo $?
0

pry-byebug を使用してデバッグを設定する方法を調べてみましたが、それほど単純ではないように見えるので、今のところそれをあきらめました。

Ruby 2.0、serverspec 2.24、rspec 3.3 を実行しています

誰かが私を正しい方向に向けるのを手伝ってくれますか?

4

2 に答える 2

1

チェックするランレベルを指定する必要がありましたが、うまくいきました。ドキュメントが上記のテストが機能するはずであることを示しているため、これは RHEL6/7 と systemV/systemD の間の下位互換性の問題であると推測します。

describe service('ntpd') do
    it { should be_enabled.with_level(2) }
    it { should be_enabled.with_level(3) }
    it { should be_enabled.with_level(4) }
    it { should be_enabled.with_level(5) }
    it { should be_running }
 end
于 2015-11-09T12:34:17.080 に答える
0

with level ソリューションが役に立たない場合は、spec_helper.rb ファイルの PATH 変数を設定して、/sbin と /usr/sbin を含める必要があることもわかりました。それは私にとって個人的にはうまくいきました。

于 2016-11-07T23:03:41.743 に答える