Идея управления нашими iptables
правилами с Puppet была выдвинута. Я вижу, что у augeas
него есть iptables
линза, но в настоящее время она экспериментальная.
У кого-нибудь есть предложения, как с этим справиться? В идеале я хотел бы построить цепочки на основе класса сервера.
linux
iptables
configuration
puppet
Бельмин Фернандес
источник
источник
Ответы:
Вот что я делаю с Red Hat Enterprise (RHEL).
У RHEL есть
iptables
служба, которая загружает правила,/etc/sysconfig/iptables
и я работаю над тем, чтобы изменить этот файл и перезапустить службу iptables. Многим людям нравится помещать фрагменты в каталог iptables.d и создавать из него набор правил iptables (через make или что-то в этом роде). Я включил материал для восстановления набора правил по умолчанию, но обычно он ничего не делает. Если ваши потребности просты, вы можете просто скопировать файл iptables в систему.Несмотря на то, как это некрасиво, это довольно тщательно протестировано на RHEL4, RHEL5 и RHEL6.
У меня было это, прежде чем поддержка augeas была в марионетке. Если бы я писал сегодня снова, я бы посмотрел на объектив augeas iptables, прежде чем прибегать к помощи
exec { "perl ...": }
.Некоторые глобальные определения для редактирования файлов на месте
Основано на материалах, изначально предоставленных http://reductivelabs.com/trac/puppet/wiki/SimpleTextRecipes
Мой класс iptables:
Некоторые примеры использования в других классах:
источник
Puppet Labs имеет пример прямо в своей вики: Модуль Iptables Patterns
Вкратце: вы создаете фрагменты для каждой службы, а затем устанавливаете их, вызывая определенный тип ipt_fragment:
Когда фрагмент установлен (он находится в /etc/iptables.d/), он запускает выполнение скрипта, который объединяет все фрагменты и перезапускает iptables.
источник
Вопрос в том, что вы намерены достичь?
Поместить iptables в Puppet очень просто: поместите скрипт на сервер Puppet и отправьте его туда, куда вам нужно. Если это нуждается в некоторой настройке, сделайте это шаблоном.
Теперь, возможно, вам нужно что-то вроде «Если на хосте X установлен WebServer, то порты 80 и 443 для него должны быть открыты». В этом случае я предлагаю вам составить сценарий из нескольких частей файла, используя модуль Common
concatenated_file
илиconcatfilepart
(я предпочитаю последний, который позволяет упорядочивать, но он доступен не на всех ветвях - я рекомендую вам лагерь, который есть).Эти части файла могут быть легко написаны с использованием шаблонов. Хитрость заключается в том, что вы экспортировать
concatfilepart
наApache
класс (возможно, вызвав определить , что готовит наconcatfilepart
основе таких параметров , как IP - адрес и порт), и наiptables
классе вы бы поняли , все экспортированныеconcatfilepart
с тегамиiptables
или что - то в этом роде.Если вы сделаете это, я бы хотел увидеть этот модуль на github. Я никогда не получал писать модуль iptables. :-)
источник