Modifique nós do fantoche.pp com regex com base na cobertura de sub-rede da rede (facter) - precisa de revisão por pares

1

Para os especialistas em fantoches por aí, estou tentando modificar meu node.pp com base na rede de contatos faciais.
Exemplo, gostaria de ter sub-redes 10.10.10.0 a 10.10.10.255 e 192.168.2.0 rede para obter os seguintes módulos fantoche.

No meu nodes.pp esse regex funciona?

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

node default { 
  include "common" 
}

^ vai acima do trabalho? Obrigado

    
por Ryan 08.10.2017 / 21:06

1 resposta

2

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.

    
por 09.10.2017 / 18:19