Spec-Zone.ru › Chef 16

Справочник по универсальным соответствиям Chef InSpec

[править на GitHub]

Chef InSpec использует соответствия для сравнения значений ресурсов с ожиданиями. Доступны следующие соответствия:

Вы также можете использовать любое соответствие, предоставляемое RSpec::Expectations, но эти соответствия находятся за пределами области поддержки InSpec области поддержки.

Доступны следующие поддерживаемые InSpec универсальные соответствия:

  • be - выполнение числовых сравнений
  • be_in - поиск значения свойства в списке
  • cmp - соответствие по равенству общего назначения (попробуйте это в первую очередь)
  • eq - соответствие по равенству, учитывающее тип
  • include - поиск ожидаемого значения в свойстве со списком значений
  • match - поиск шаблонов в тексте с помощью регулярных выражений

Подробнее о встроенных соответствиях InSpec см. на Learn Chef Rally в разделе «Исследовать ресурсы Chef InSpec».

be

За этим соответствием могут следовать различные операторы сравнения. Всегда убедитесь, что для этих сравнений используются числа, а не строки.

describe file('/proc/cpuinfo') do
  its('size') { should be >= 10 }
  its('size') { should be < 1000 }
end

cmp

В отличие от eq, cmp — это соответствие для менее жёстких сравнений. Оно попытается привести фактическое значение к типу, с которым вы его сравниваете. Это призвано освободить пользователя от необходимости писать преобразования типов и решения.

describe sshd_config do
  its('Protocol') { should cmp 2 }
end

describe passwd.uid(0) do
  its('users') { should cmp 'root' }
end

cmp работает следующим образом:

  • Сравнение строк с числами
describe sshd_config do
  # Only `'2'` works
  its('Protocol') { should eq '2' }

  # Both of these work
  its('Protocol') { should cmp '2' }
  its('Protocol') { should cmp 2 }
end
  • Сравнения строк нечувствительны к регистру
describe auditd_conf do
  its('log_format') { should cmp 'raw' }
  its('log_format') { should cmp 'RAW' }
end
  • Распознавание версий, встроенных в строки
describe package('curl') do
  its('version') { should cmp > '7.35.0-1ubuntu2.10' }
end
  • Сравнение массивов с одним элементом со значением
describe passwd.uids(0) do
  its('users') { should cmp 'root' }
  its('users') { should cmp ['root'] }
end
  • Массивы со строками, содержащие одно значение, также можно сравнивать с регулярными выражениями
describe auditd_conf do
  its('log_format') { should cmp /raw/i }
end
  • Улучшен вывод для восьмеричных сравнений
describe file('/proc/cpuinfo') do
  its('mode') { should cmp '0345' }
end

expected: 0345
got: 0444

eq

Проверка точного равенства двух значений.

describe sshd_config do
  its('RSAAuthentication') { should_not eq 'no' }
  its('Protocol') { should eq '2' }
end

eq терпит неудачу, если типы не совпадают. Пожалуйста, имейте это в виду при сравнении записей конфигурации, которые являются числами:

its('Port') { should eq '22' } # ok

its('Port') { should eq 22 }
# fails: '2' != 2 (string vs int)

Для менее жёстких сравнений используйте cmp.

include

Проверяет, содержится ли значение в списке.

describe passwd do
  its('users') { should include 'my_user' }
end

be_in

Проверяет, содержится ли элемент в списке.

describe resource do
  its('item') { should be_in LIST }
end

match

Проверка соответствия строки регулярному выражению.

describe sshd_config do
  its('Ciphers') { should_not match /cbc/ }
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/matchers

Spec-Zone.ru

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