使用基于networking(因特网)子网覆盖的正则expression式修改puppet nodes.pp需要同行评审

对于那里的傀儡专家,我正在尝试修改基于node.pp
例如,我想要10.10.10.0到10.10.10.255和192.168.2.0networking的子网获得以下puppet模块。

在我的nodes.pp这个正则expression式工作?

 node \d(10).(10).[0-10].[0-255] | \d (192).(168).(2).[0] $ { include "ntp" include "dhcp" include "common" } node default { include "common" } 

^会在上面工作吗? 谢谢

这不会如图所示。 首先,正则expression式不好,而且节点匹配器也是基于certname ,即主机的FQDN。 这并不是说你无法做到这一点,但是需要更多的工作,并且需要你进入不受支持的configuration领域。 所以,基本上,你是自己的。 这就是Puppet的文档所说的:

节点语句按名称匹配节点。 节点的名称是其唯一标识符; 默认情况下,这是它的certname设置,该设置依次默认为节点的完全限定的域名。

有关非Certname节点名称的说明

尽pipe可以将certname以外的其他名称设置为节点名称(使用node_name_fact或node_name_value设置),但我们通常不推荐这样做。 它允许您为多个节点重复使用一个节点证书,但是这会降低安全性,使得难以可靠地识别节点,并且可能会干扰其他function。

在Puppet Enterprise中不正式支持设置非证书名称的节点名称。

没有指定Puppet版本,所以我的回答是基于最新的(5.3)。

相反,为什么不使用默认的节点定义,并将其与基于$::network的值的逻辑相结合?

 node default { case $::network { /^(10\.10\.[0-10]\.[0-255]|192\.168\.2\.0)$/ : { include ntp include dhcp include common } default: { include common } } } 

这是通过更改包括通知和更改networking$ var并testing各种值进行testing。

 [aaron@localhost ~]$ cat network.pp #$var='10.10.1.5' $var='192.168.2.1' case $var { /^(10\.10\.[0-10]\.[0-255]|192\.168\.2\.0)$/ : { notice('match') } default: { notice('default') } } [aaron@localhost ~]$ puppet apply network.pp Notice: Scope(Class[main]): default Notice: Compiled catalog for localhost.local in environment production in 0.21 seconds Notice: Applied catalog in 0.01 seconds 

我将其包含在内,这样你就可以很好地了解如何在不花费精力将其部署到您的Puppetmaster并使用各种主机进行testing的情况下快速查看是否应该起作用。