Gagasan mengelola iptables
aturan kita dengan Wayang telah diangkat. Saya melihat bahwa augeas
ada iptables
lense tetapi saat ini masih eksperimental.
Adakah yang punya saran tentang bagaimana menangani ini? Idealnya, saya ingin membangun rantai berdasarkan kelas server.
linux
iptables
configuration
puppet
Belmin Fernandez
sumber
sumber
Jawaban:
Inilah yang saya lakukan dengan Red Hat Enterprise (RHEL).
RHEL memiliki
iptables
layanan yang memuat aturan dari/etc/sysconfig/iptables
dan saya sedang bekerja dengan memodifikasi file itu dan memulai kembali layanan iptables. Banyak orang suka meletakkan fragmen ke direktori iptables.d dan membangun iptables (melalui make atau sesuatu seperti itu) dari aturan itu. Saya menyertakan hal-hal untuk membangun kembali aturan default, tetapi itu biasanya tidak pernah melakukan apa-apa. Jika kebutuhan Anda sederhana, Anda bisa menyalin file iptables ke sistem.Meskipun tampak jelek, ini cukup teruji pada RHEL4, RHEL5 dan RHEL6.
Aku melakukan ini sebelum dukungan augeas ada di boneka. Jika saya menulisnya lagi hari ini saya akan melihat lensa iptables augeas sebelum beralih
exec { "perl ...": }
.Beberapa definisi global untuk mengedit file pada tempatnya
Berdasarkan hal-hal yang berasal dari http://reductivelabs.com/trac/puppet/wiki/SimpleTextRecipes
Kelas iptables saya:
Beberapa contoh penggunaan di kelas lain:
sumber
Puppet Labs memiliki contoh tepat di wiki mereka: Module Iptables Patterns
Singkatnya: Anda membuat fragmen untuk setiap layanan dan kemudian menginstalnya dengan memanggil tipe yang ditentukan ipt_fragment:
Ketika sebuah fragmen diinstal (mereka berada di /etc/iptables.d/), itu memicu eksekusi skrip yang menggabungkan semua fragmen dan me-restart iptables.
sumber
Pertanyaannya adalah, apa yang ingin Anda capai?
Menempatkan iptables di Puppet itu mudah: letakkan skrip di server boneka, dan sajikan ke mana pun Anda membutuhkannya. Jika perlu kustomisasi, buatlah template.
Sekarang, mungkin Anda menginginkan sesuatu seperti "Jika host X memiliki WebServer, maka port 80 dan 443 ke sana harus terbuka". Dalam hal ini, apa yang saya sarankan Anda lakukan adalah menyusun skrip dari beberapa bagian file, menggunakan modul Umum
concatenated_file
atauconcatfilepart
(Saya lebih suka yang terakhir, yang memungkinkan pemesanan, tetapi tidak tersedia di semua garpu - saya tunjukkan kepada Anda untuk camptocamp, yang memilikinya).Bagian-bagian file ini dapat dengan mudah ditulis menggunakan templat. Kuncinya adalah bahwa Anda mengekspor tersebut
concatfilepart
diApache
kelas (mungkin dengan memanggil mendefinisikan bahwa mempersiapkanconcatfilepart
berdasarkan parameter seperti alamat IP dan port), dan padaiptables
kelas Anda akan menyadari semua dieksporconcatfilepart
ditandai denganiptables
atau sesuatu seperti itu.Jika Anda melakukan itu, saya ingin melihat modul itu di github. Saya tidak pernah menulis modul iptables. :-)
sumber