Назад | Перейти на главную страницу

как открыть порт 80 на коробке, управляемой с помощью Puppet

У меня есть виртуальная машина марионеточного мастера, которая управляет почти 20 узлами. У меня установлен Nagios на одном из этих узлов, и для того, чтобы графический интерфейс Nagios работал, мне нужно было бы остановить iptables на этом ящике nagios. Проблема в том, что всякий раз, когда Puppet запускается, он снова запускает службу iptables. Я попытался добавить службу в файл server.pp модулей nagios, подобный этому, который не работал. В нем говорится, что служба 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',
    }
  }

Может ли кто-нибудь помочь мне с этим?

заранее спасибо

Вместо того, чтобы полностью отключать iptables, я бы рекомендовал использовать модуль Puppetlabs Firewall для управления межсетевыми экранами / iptables:

$ puppet module установить puppetlabs-firewall

Затем вы можете написать такую ​​марионетку:

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