Spec-Zone.ru › Chef 18

Ресурс parse_config_file

[редактировать на GitHub]

Используйте ресурс аудита Chef InSpec parse_config_file для проверки произвольных конфигурационных файлов. Он работает аналогично parse_config. Вместо использования вывода команды, этот ресурс работает с файлами.

Доступность

Установка

Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.

Версия

Этот ресурс стал доступен в версии InSpec v1.0.0.

Синтаксис

Блок ресурса аудита parse_config_file Chef InSpec объявляет расположение конфигурационного файла для проверки и какие параметры этого файла необходимо проверить.

describe parse_config_file('/path/to/file', { data_config_option: value } ) do
  its('setting') { should eq 1 }
end

или:

options = {
  assignment_regex: /^\s*([^:]*?)\s*:\s*(.*?)\s*$/,
  multiple_values: true
}

describe parse_config_file('path/to/file', options) do
  its('setting') { should eq 1 }
end

где каждый тест

  • Должен объявить расположение конфигурационного файла для проверки
  • Должен объявить один (или несколько) параметр для проверки
  • Может выполнить команду для stdout, а затем выполнить проверку на основе этого вывода
  • Может использовать параметры для определения того, как обрабатывать конфигурационные данные

Имена параметров, содержащие точки

Может возникнуть проблема при попытке доступа к именам параметров, содержащим точки, с its(). Существует два способа обойти это:

  • Получите доступ к параметру, используя атрибут params возвращаемого объекта ресурса
  • Начиная с версии 4.24.5, можно использовать its, передавая имя параметра в массив из одного элемента. См. примеры parse config file.

Параметры

Этот ресурс поддерживает несколько параметров для обработки конфигурационных данных. Используйте параметры в блоке options указанном вне (и непосредственно перед) фактическим тестом. Например:

options = {
    assignment_regex: /^\s*([^:]*?)\s*:\s*(.*?)\s*$/,
    multiple_values: true
  }
describe parse_config_file('path/to/file',  options) do
  its('setting') { should eq 1 }
end

assignment_regex

Используйте assignment_regex для проверки значения ключа с помощью регулярного выражения:

'key = value'

можно проверить, используя следующее регулярное выражение, которое определяет присвоение от ключа к значению:

assignment_regex: /^\s*([^=]*?)\s*=\s*(.*?)\s*$/

comment_char

Используйте comment_char для проверки комментариев в конфигурационном файле:

comment_char: '#'

key_values

Используйте key_values для проверки того, сколько значений содержит ключ:

key = a b c

содержит три значения. Чтобы проверить, что значение содержит только одно, используйте:

key_values: 1

multiple_values

Используйте multiple_values если исходный файл использует один и тот же ключ несколько раз. Все значения будут агрегированы в массив:

# # file structure:
# key = a
# key = b
# key2 = c
params['key'] = ['a', 'b']
params['key2'] = ['c']

Для использования простой сопоставления ключ-значение, используйте multiple_values: false:

# # file structure:
# key = a
# key = b
# key2 = c
params['key'] = 'b'
params['key2'] = 'c'

standalone_comments

Используйте standalone_comments для обработки комментариев как строки, иначе допускаются встраиваемые комментарии:

'key = value # comment'
params['key'] = 'value # comment'

Используйте standalone_comments: false, для обработки следующего:

'key = value # comment'
params['key'] = 'value'

Сопоставители

Полный список доступных сопоставителей см. на нашей странице сопоставителей.

Примеры

В следующих примерах показано, как использовать этот ресурс аудита Chef InSpec.

Проверка конфигурационного параметра

describe parse_config_file('/path/to/file.conf') do
 its('PARAM_X') { should eq 'Y' }
end

Использование параметров и проверка конфигурационного параметра

describe parse_config_file('/path/to/file.conf', { multiple_values: true }) do
 its('PARAM_X') { should include 'Y' }
end

Проверка файла с структурой INI

yum.conf — это один из примеров типа структуры файла INI.

describe parse_config_file('/path/to/yum.conf') do
 its('main') { should include('gpgcheck' => '1') }
end

Проверка конфигурационного параметра, содержащего точки

describe parse_config_file('/etc/sysctl.conf') do
 its(['kernel.domainname']) { should eq 'example.com' }
end

© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/parse_config_file/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API