2016-11-02 2 views
6

Я пишу тесты InSpec для некоторых новых рецептов шеф-повара, над которыми я работаю. Я хотел бы использовать data_bags, используемые кулинарными книгами, для итерации через элементы пакета данных. Я не могу понять, как получить к ним доступ в моих тестах InSpec! В рецептах используются методы поиска, data_bag и data_bag_item. Но эти методы, похоже, не доступны в моем тесте InSpec. Я подозреваю, что это специальные методы Chef DSL? Источник для data_bags находится под контролем источника, поэтому у меня есть доступ к json для них в локальной файловой системе.Как получить доступ к Chef data_bags в InSpec

Как получить доступ к данным data_bags в Chef_zero с использованием синтаксиса InSpec?

Я нашел пару примеров в Интернете, но я не вижу, как data_bags действительно загружаются chef_zero, чтобы их можно было использовать в тестах, например. https://github.com/charlesjohnson/fundamentals-with-tests/blob/master/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

Я использую сервер 2012R2 окно Windows, на Бродячей тест-кухни. Это пример элементов рукавных данных из одного из мешков данных:

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

Данный пакет данных содержит список пользователей Active Directory для Windows добавляется в группу администраторов.

Я поставил data_bag_path в моем .kitchen.yml (я поставил его в люксах и Provisioner), но я не попал в точку, где я могу увидеть, который один является правильным:

--- 
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: 
+0

http://inspec.io/docs/reference/ruby_usage/может помочь вам. – JackChance

+0

Спасибо, это похоже на то, что мне нужно. Я надеялся, что есть более простой способ. –

ответ

0

Этот это невозможно. InSpec работает полностью отдельно от шеф-повара и не имеет ничего общего с шеф-поваром. Вы должны написать детали мешок в виде файлов со стороны шеф-повара, а затем прочитать их с помощью кода Inspec, что было бы сложно, что-то вроде этого, возможно (непроверенные):

item = JSON.parse(command('cat /tmp/item.json').stdout) 
+0

Спасибо coderanger, я ожидал, что это будет иначе, поскольку используемый подход использует Chef DSL. Попробуем ваше предложение спасибо! –

Смежные вопросы