Puppet找不到类防火墙

时间:2017-09-20 19:53:36

标签: puppet ubuntu-16.04

我使用本教程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;
}

文件部分可以工作但不能防火墙。

1 个答案:

答案 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根据模块对资源管理的定义的系统防火墙配置的定义所定义)。这对于消除人们所做的局部变化很有好处,但它也会产生有趣的副作用,所以要小心。