我使用本教程https://www.digitalocean.com/community/tutorials/how-to-install-puppet-4-on-ubuntu-16-04
进行基本的木偶安装当我在我的节点上运行/opt/puppetlabs/bin/puppet agent --test
时,我得到了
错误:无法从远程服务器检索目录:SERVER上的错误500:服务器错误:评估资源语句时出错。在节点mark-inspiron上的/etc/puppetlabs/code/environments/production/manifests/site.pp:7:1找不到声明的类防火墙。
在我的节点上:
/opt/puppetlabs/bin/puppet module list
返回
的/ etc / puppetlabs /代码/环境/生产/模块
----- puppetlabs-firewall(v1.9.0)
在我的木偶大师/etc/puppetlabs/code/environments/production/manifests/site.pp上:
file {'/tmp/it_works.txt': # resource type file and filename
ensure => present, # make sure it exists
mode => '0644', # file permissions
content => "It works on ${ipaddress_eth0}!\n", # Print the eth0 IP fact
}
class { 'firewall': }
resources { 'firewall':
purge => true,
}
firewall { "051 asterisk-set-rate-limit-register":
string => "REGISTER sip:",
string_algo => "bm",
dport => '5060',
proto => 'udp',
recent => 'set',
rname => 'VOIPREGISTER',
rsource => 'true';
}
firewall { "052 asterisk-drop-rate-limit-register":
string => "REGISTER sip:",
string_algo => "bm",
dport => '5060',
proto => 'udp',
action => 'drop',
recent => 'update',
rseconds => '600',
rhitcount => '5',
rname => 'VOIPREGISTER',
rsource => true,
rttl => true;
}
文件部分可以工作但不能防火墙。
答案 0 :(得分:2)
您需要在使用Puppet的主设置中在主设备上安装模块。他们需要在modulepath
的某个地方。您可以将它放在$codedir
(通常为/etc/puppetlabs/code/modules
)的模块目录中,也可以放在目录环境模块目录中(可能/etc/puppetlabs/code/environments/production/modules
,因为引用的site.pp
是那里)。如果您在environment.conf
中定义了其他模块路径,那么您也可以将模块放在那里。
您可以使用各种方法安装/部署它们,例如librarian-puppet,r10k或代码管理器(在Enterprise中)。但是,最简单的方法是在主服务器上puppet module install puppetlabs-firewall
。然后,您的Puppet目录将在编译期间找到firewall
类。
旁注,那:
resources { 'firewall':
purge => true,
}
将删除对Puppet未管理的相关防火墙配置的任何更改(由Puppet根据模块对资源管理的定义的系统防火墙配置的定义所定义)。这对于消除人们所做的局部变化很有好处,但它也会产生有趣的副作用,所以要小心。