parse_config_file ресурс
Используйте parse_config_file ресурс аудита Chef InSpec для проверки произвольных конфигурационных файлов. Он работает так же, как и 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