Выяснить, являются ли 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.