Pojawił się pomysł zarządzania naszymi iptables
zasadami za pomocą Puppet. Widzę, że augeas
ma iptables
soczewkę, ale obecnie jest eksperymentalna.
Czy ktoś ma jakieś sugestie, jak sobie z tym poradzić? Idealnie chciałbym zbudować łańcuchy na podstawie klasy serwera.
linux
iptables
configuration
puppet
Belmin Fernandez
źródło
źródło
Odpowiedzi:
Oto, co robię z Red Hat Enterprise (RHEL).
RHEL ma
iptables
usługę, która ładuje reguły/etc/sysconfig/iptables
i pracuję z modyfikacją tego pliku i restartem usługi iptables. Wiele osób lubi upuszczać fragmenty do katalogu iptables.d i budować z tego zestaw reguł iptables (poprzez make lub coś w tym stylu). Dołączam rzeczy do przebudowania domyślnego zestawu reguł, ale to zwykle nic nie robi. Jeśli Twoje potrzeby są proste, możesz po prostu skopiować plik iptables do systemu.Pomimo tego, jak brzydko to wygląda, jest dość dokładnie przetestowany na RHEL4, RHEL5 i RHEL6.
Miałem to do czynienia, zanim wsparcie Augeas było w marionetce. Gdybym dzisiaj pisał to jeszcze raz, przed skorzystaniem z niego spojrzałbym na soczewkę iptables augeas
exec { "perl ...": }
.Niektóre globalne definicje edycji plików w miejscu
Na podstawie materiałów pochodzących z http://reductivelabs.com/trac/puppet/wiki/SimpleTextRecipes
Moja klasa iptables:
Niektóre przykłady użycia w innych klasach:
źródło
Puppet Labs ma przykład na swojej wiki: Wzory modułów Iptables
Krótko mówiąc: tworzysz fragmenty dla każdej usługi, a następnie instalujesz je, wywołując zdefiniowany typ ipt_fragment:
Kiedy fragment jest zainstalowany (znajdują się w /etc/iptables.d/), uruchamia skrypt, który łączy wszystkie fragmenty i restartuje iptables.
źródło
Pytanie brzmi: co zamierzasz osiągnąć?
Umieszczenie iptables na Puppet jest łatwe: umieść skrypt na serwerze kukiełkowym i podaj go tam, gdzie go potrzebujesz. Jeśli wymaga dostosowania, ustaw go jako szablon.
Być może chcesz czegoś takiego: „Jeśli host X ma WebServer, wówczas porty 80 i 443 muszą być otwarte”. W takim przypadku sugeruję skomponowanie skryptu z wielu części pliku, przy użyciu modułu Common
concatenated_file
lubconcatfilepart
(preferuję ten drugi, który umożliwia zamawianie, ale nie jest dostępny na wszystkich forkach - wskazuję na camptocamp's, który go ma).Te części pliku można łatwo napisać za pomocą szablonów. Sztuką jest to, że eksport
concatfilepart
naApache
klasy (ewentualnie poprzez wywołanie określić, które przygotowujeconcatfilepart
w oparciu o parametry takie jak adres IP i port), a naiptables
klasy chcesz zrealizować wszystkie eksportowaneconcatfilepart
z etykietąiptables
lub coś podobnego.Jeśli to zrobisz, chciałbym zobaczyć ten moduł na github. Nigdy nie napisałem modułu iptables. :-)
źródło