我有一个管理近 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,
}