2016-04-12 33 views
0

Yakın zamana kadar kuklaı çok basit bir şekilde kullanıyoruz. Iptables'i yönetmek için bir iptables-save dosyası oluşturduk ve onu yükledik. İptables yönetimimizi yenilemek ve puppetlabs/firewall modülünü kullanmak istiyorum.Kukla: YAML'leri puppetlabs/firewall ile kullanma

En iyi yöntemler, bununla ilgilenmek için .yaml dosyaları kullanmamı önerir, ancak hiera() ve yaml's kullanarak çok fazla sorunla karşılaşıyorum. Bazı grupla ilişkili aralıkları listesi olması common.yaml istiyorum

:

firewall_group: 
    localdomain: 
    - 10.0.0.3/32 
    - 10.10.0.0/26 
    anotherdomain: 
    - 172.0.1.0/26 

Ve diğer bazı {$ certname} istediğiniz konak kabul edecek limanların listesini içerecek şekilde .yaml grupların bazıları listeden gelen erişimi:

ports: 
    ssh: 
    number: 22 
    groups: 
     - localdomain 
    http: 
    number: 80 
    groups: 
     - localdomain 
     - anotherdomain 

puppetlabs/güvenlik duvarı kullanarak bu güvenlik duvarı kuralları oluşturmak için en iyi yolu nedir? (Hiera.yaml'nin bu .yaml dosyalarını doğru bir şekilde görüp görmediğini varsayarak) .pp dosyasını init.pp'nin içerdiği custom_fw/manifests/core.pp dosyasına yerleştiriyorum.

$ nests.each yöntemini ve "nested yaml loop kukla" araması yaptığım create_resources() yöntemini kullanmayı denedim, ancak eminim kukla başarısız olan bazı hatalar yaptım.

Herhangi bir içgörü için şimdiden teşekkür ederiz!

cevap

1

Bu problem üzerinde biraz zaman geçirdim ve aşağıdaki çözümü buldum.

İlk olarak, modülümü alexharvey/firewall_multi numaralı duruma getirin. Yazım sırasında, kukla Labs güvenlik duvarının önceki sürümleriyle uyumluluğa ihtiyaç duyan herkes için modülümü yamaya istekli olmamasına rağmen, en son kuklalar/güvenlik duvarı modülüne (v1.8.0) da ihtiyacınız olacaktır.

Firewall_multi modülü, Kukla Labs güvenlik duvarı modülüne çoklayıcı önyüz sağlar ve bu da kaynak ve hedef dizilerini belirtmemize olanak tanır. İkinci olarak, Hiera'nın başka bir yerinde kullanılabilecek bir Hiera dizisi için bir takma ad tanımlamanıza olanak veren alias lookup function olan Hiera sürüm 3'e gereksiniminiz olacaktır.

Artık yapabilirsiniz:

--- 
mylocaldomain: 
    - 10.0.0.3/32 
    - 10.10.0.0/26 
myotherdomain: 
    - 172.0.1.0/26 

myclass::firewall_multis: 
    '00099 accept tcp port 22 for ssh': 
    dport: '22' 
    action: 'accept' 
    proto: 'tcp' 
    source: "%{alias('mylocaldomain')}" 
myotherclass::firewall_multis: 
    '00200 accept tcp port 80 for http': 
    dport: '80' 
    action: 'accept' 
    proto: 'tcp' 
    source: "%{alias('myotherdomain')}" 

Ve:

class myclass (
    $firewall_multis, 
) { 
    validate_hash($firewall_multis) 
    create_resources(firewall_multi, $firewall_multis) 
    ... 
} 

class myotherclass (
    $firewall_multis, 
) { 
    validate_hash($firewall_multis) 
    create_resources(firewall_multi, $firewall_multis) 
    ... 
} 
+0

teşekkür ederiz! Ne yazık ki firewall_multi işe yaramadı. Biraz titizlik gösterse de .each() kullanarak soruyu nasıl yapacağımı anladım. –

+0

Firewall_multi kullanmaya çalıştığınızda yanlış giden bir sorunu bildirmeme izin verirseniz minnettar olurum. Güvenlik duvarı modülü (Puppet Labs one) zaten bir giriş limanı olarak bir dizi bağlantı kabul edeceğinden, bağlantı noktaları (ports.each vb.) Üzerinde döngü yapmanıza gerek yoktur. Fyi –

+0

Ah üzgünüm, görüyorum. Hiera "bağlantı noktası" nda karma çağırdı. Tamam, yorumumu görmezden gel. –