6

私が取り組んでいるいくつかの新しい Chef レシピの InSpec テストを書いています。クックブックで使用される data_bags を利用して、データ バッグ アイテムを反復処理したいと考えています。InSpec テストでそれらにアクセスする方法がわかりません! レシピは、search、data_bag、および data_bag_item メソッドを使用しています。しかし、これらのメソッドは、私の InSpec テストでは利用できないようです。これらは Chef DSL 固有のメソッドだと思いますか? data_bags のソースはソース管理下にあるため、ローカル ファイル システムでそれらの json にアクセスできます。

InSpec 構文を使用して Chef_zero でこれらの data_bags にアクセスするにはどうすればよいですか?

オンラインでいくつかの例を見つけましたが、テストで使用できるように、data_bagsがchef_zeroによって実際にロードされる方法がわかりません。 /chef-repo/cookbooks/users/test/integration/default/serverspec/default_spec.rb および https://github.com/chef/chef/blob/master/kitchen-tests/test/integration/webapp/default_spec.rb

Vagrant テストキッチンで Windows サーバー 2012R2 ボックスを使用しています。これは、データ バッグの 1 つからのデータ バッグ アイテムの例です。

{
  "User": "mcummins",
  "FullName": "Martin Cummins",
  "id": "mcummins"
}

この特定のデータ バッグには、管理者グループに追加された Windows Active Directory ユーザーが一覧表示されます。

.kitchen.yml に data_bag_path を設定しました (スイートとプロビジョナーに設定しました) が、どちらが正しいかを確認するまでには至っていません。

---
driver:
  name: vagrant
  customize:
   natdnshostresolver1: "on"

provisioner:
  name: chef_zero
  data_bags_path: ../../../data_bags
#  client_rb:
#    audit_mode: :audit_only

verifier:
  name: inspec

platforms:
   - name: mwrock/Windows2012R2
     transport:
      name: winrm

suites:
  - name: default
    data_bags_path: ../../../data_bags
    run_list:
      - recipe[SPMWindowsBuilder::default]
    verifier:
      inspec_tests:
        - test/integration
    attributes:
4

2 に答える 2

0

これは不可能です。InSpec は Chef とは完全に独立して実行され、Chef と内部的には何の関係もありません。Chef 側からバッグ項目をファイルとして書き込んでから、InSpec コード経由で読み込む必要がありますが、これはおそらく次のようなものです (未テスト):

item = JSON.parse(command('cat /tmp/item.json').stdout)
于 2016-11-18T16:19:07.513 に答える