如何在使用 Puppet 管理的盒子上打开端口 80

如何在使用 Puppet 管理的盒子上打开端口 80

我有一个管理近 20 个节点的 Puppet Master 虚拟机。我在其中一个节点上安装了 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',
    }
  }

有人可以帮我吗?

提前致谢

答案1

我建议不要完全关闭 iptables,而是使用 Puppetlabs 防火墙模块来管理防火墙/iptables:

$ puppet 模块安装 puppetlabs-防火墙

然后你可以编写一些像这样的 Puppet:

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

相关内容