web-dev-qa-db-ja.com

Puppetで管理されているボックスのポート80を開く方法

ほぼ20のノードを管理するパペットマスター仮想マシンがあります。これらのノードの1つにNagiosをインストールしていますが、Nagios GUIを機能させるには、そのnagiosボックスでiptablesを停止する必要があります。問題は、Puppetが実行されるたびに、iptablesサービスが再開されることです。このようなnagiosモジュールserver.ppファイルにサービスを追加しようとしましたが、機能しませんでした。 iptablesサービスはすでに定義されており、重複することはできません。

service
   {
     iptables:
     ensure => stopped,

 }

また、execコマンドを使用してみました

exec { "open-port-80":
         command  => "Sudo iptables -I INPUT 14 -m state --state NEW -p tcp --dport 80 -j ACCEPT",
        path     => "${os_path}",
        unless   => "Sudo iptables-save | grep 80 | grep INPUT | grep ACCEPT | grep NEW | wc -l | xargs test 1 -eq",
        notify   => Exec["ip-tables-save"]
}

exec { "ip-tables-save":
         command     => "Sudo service iptables save",
#        refreshonly => true,
#        path        => "${os_path}",
}

以下のコードも試しましたが、うまくいきませんでした。

if defined("iptables") and defined(Class['iptables'])
  {
    iptables::add_tcp_stateful_listen
    {
      ‘nagios-core':
      client_nets => '[nagios node IP address here]/32',
        dports => ‘80',
    }
  }

誰かがそれを手伝ってくれませんか?

前もって感謝します

3
Irina

Iptablesを完全にオフにする代わりに、PuppetlabsFirewallモジュールを使用してファイアウォール/ iptablesを管理することをお勧めします。

$ puppet module install puppetlabs-firewall

次に、次のようなパペットを書くことができます。

firewall { '100 Allow http and https access':
  port   => [80, 443],
  proto  => tcp,
  action => accept,
}
1
Peter Souter