ресурс интерфейсов
Используйте ресурс аудита interfaces Chef InSpec для проверки свойств нескольких сетевых интерфейсов в системе.
Синтаксис
Блок ресурса interfaces может не принимать аргументов, в этом случае он выведет список всех интерфейсов:
describe interfaces do
its('names') { should include 'eth0' }
end
Блок ресурса interfaces может принимать предложение where, фильтруя по критериям фильтрации:
# All eth- interfaces
describe interfaces.where(name: /^eth\d+/)
its('names') { should include 'eth0' }
end
Как и любой ресурс Chef InSpec, вы можете использовать его для поиска данных вместо тестирования:
# We are an IPv6 shop
interfaces.where(name: /^eth/).names do |name|
describe interface(name) do
it { should have_ipv6_address }
end
end
# Obtain the machine's main IP address
my_ip = interfaces.ipv4_address
Критерии фильтрации
name
Строка. Название интерфейса.
Свойства
count
Свойство count возвращает целое число, описывающее количество сопоставленных интерфейсов.
its(“count”) { should eq 6 }
ipv4_address
Попытка определить «первый» «действительный» IPv4-адрес на любом интерфейсе. Ищет интерфейсы, которые активны и имеют назначенные IPv4-адреса, затем пытается отфильтровать петлевые, управляющие (10/8) и локальные (192.168/16) IP-адреса, возвращая лучший из тех, которые он может; вы всё ещё можете получить nil или петлевой адрес. Обратите внимание, что если машина находится за NAT, это не будет внешний IP-адрес; используйте ресурс http для запроса службы поиска IP-адресов.
its(‘ipv4_address’) { should_not eq ‘127.0.0.1’ }
names
Свойство names возвращает массив строк, представляющих имена интерфейсов.
its(“names”) { should include “eth0” }
Матчеры
Полный список доступных универсальных матчеров см. на нашей странице матчеров.
exist
Матчер exist проверяет истинность, если в системе существует хотя бы один интерфейс. Это почти всегда так.
it { should exist }
© 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/interfaces/