2

Chef InSpec の他のリソース内で 1 つのリソースを使用することは可能ですか?

例:

 describe command('su srijava') do
     describe file ('/app/java/latest') do     
         it{ should exist }
     end
 end

次のようなエラーがスローされます。

`method_missing': undefined method `file' for RSpec::ExampleGroups::CommandSuSriava:Class (NoMethodError)

実際にやりたいことは、他のユーザーにインストールされているユーティリティを実行する必要があり、そのセッションから返された出力を確認して検証する必要があることです。例 :

  • Java をsrijavaユーザーとしてインストールしました
  • Inspec で、Java バージョンをテストするコマンドを作成しました ( rootjava -versionとしてではなく、そのユーザーでのみ実行されると仮定します)。
  • を使用するsu srijavaと、出力がルート セッションに返されず、テストが失敗します。
  • なしで実行すると、ユーティリティはユーザーがSriJavasu srijavaではないというエラーをスローします

コードsu

describe command('su srijava ; cd /app/java; ./java --version') do
        its('stdout') { should match('1.7') }
 end

なしのコードsu:

describe command('cd /app/java; ./java --version') do
        its('stdout') { should match('1.7') }
 end

どうやってやるの?

4

2 に答える 2

0

いいえ、通常の RSpec でもこの 2 つを組み合わせることはできないため、意味がありません。問題がルートとしてファイルをチェックする必要がある場合は、InSpec の sudo オプションを使用できます。ファイルが特定のユーザーとして存在するかどうかを確認する理由がわかりませんが、それはサポートされていません。

于 2016-06-30T16:26:00.637 に答える