Ресурс интерфейсов
Используйте ресурс аудита 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-адреса, затем пытается отфильтровать адреса loopback, управления (10/8) и локальные (192.168/16), возвращая лучший из доступных; вы по-прежнему можете получить значение nil или адрес loopback. Обратите внимание, что если машина находится за 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/