Выяснить, являются ли IP-адреса общедоступными или частными для использования в рецептах шеф-повара

Я использую Chef для автоматизации развертывания различных зон SmartOS. Я пытаюсь выяснить, как правильно определить, имеет ли сетевой интерфейс публичный или частный адрес, и отслеживать его. Для общих директив Apache Listen и NameVirtualHost достаточно следующего:

ips = []
links = %x{dladm show-vnic -o link | grep -v LINK}.strip.split("\n")
links.each do |link|
  ips << %x{ifconfig #{link} | grep inet | awk '{ print $2 }'}.strip
end

Для правил ipfilter мне нужно иметь два разных класса правил. Правила, которые применяются к общедоступным интерфейсам, а затем применяют другой набор к частным интерфейсам. Должен ли я передавать все интерфейсы шеф-повару через файл конфигурации json, а не выяснять это внутри рецептов?

1 ответ

ohai генерирует данные атрибутов во время выполнения.

в частности, вы можете быть заинтересованы в

$ sudo ohai network/interfaces

и связанные

node["network"]["interfaces"]

Вам все равно придется отклонить адреса ine t4 RFC1918 и проверить, что область ссылок является глобальной для inet6.

Другие вопросы по тегам