Isso não funcionará como mostrado. Primeiro, o regex não é bom, mas também os correspondentes de nó são baseados em certname
, que é o FQDN do host. Isso não quer dizer que você não pode fazer isso, mas exigiria mais algum trabalho e isso exigiria que você entrasse no reino da configuração não suportada. Então, basicamente, você está sozinho. Isto é o que a documentação do Puppet diz:
Node statements match nodes by name. A node’s name is its unique identifier; by default, this is its
certname
setting, which in turn defaults to the node’s fully qualified domain name.Note on Non-Certname Node Names
Although it’s possible to set something other than the
certname
as the node name (using either the node_name_fact or node_name_value setting), we don’t generally recommend it. It allows you to re-use one node certificate for many nodes, but it reduces security, makes it harder to reliably identify nodes, and can interfere with other features.Setting a non-certname node name is not officially supported in Puppet Enterprise.
Nenhuma versão do Puppet foi especificada, então minha resposta é baseada no mais recente (5.3).
Em vez disso, por que você não usa sua definição de nó padrão e a combina com lógica baseada no valor de $::network
?
node default {
case $::network {
/^(10\.10\.[0-10]\.[0-255]|192\.168\.2\.0)$/ : {
include ntp
include dhcp
include common
}
default: { include common }
}
}
Isso foi testado alterando as inclusões para avisos e alterando a rede para $ var e testando vários valores.
[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
Eu incluí isso para que você tenha uma boa ideia de como você pode ver rapidamente se algo deve funcionar sem gastar esforço para implantá-lo no seu Puppetmaster e testar com vários hosts.