web-dev-qa-db-ja.com

ネットワーク(ファクト)サブネットカバレッジに基づいて正規表現でpuppetnodes.ppを変更します-ピアレビューが必要です

そこにいる人形の専門家のために、私はファクトネットワークに基づいてnode.ppを変更しようとしています。
例として、次のパペットモジュールを取得するために、サブネット10.10.10.0から10.10.10.255および192.168.2.0ネットワークが必要です。

私のnodes.ppでは、この正規表現は機能しますか?

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

node default { 
  include "common" 
}

^上記は機能しますか?ありがとうございました

1
Ryan

これは、示されているようには機能しません。まず、正規表現は適切ではありませんが、ノードマッチャーもホストのFQDNであるcertnameに基づいています。それができないというわけではありませんが、さらに作業が必要になり、サポートされていない構成の領域に入る必要があります。だから、基本的に、あなたはあなた自身です。これは、Puppetのドキュメントに書かれていることです。

ノードステートメントは、名前でノードと一致します。ノードの名前はその一意の識別子です。デフォルトでは、これは certname 設定であり、デフォルトでノードの完全修飾ドメイン名になります。

非証明書名に関する注記Node Names

certname 以外のものをノード名として設定することは可能ですが( node_name_fact または node_name_value 設定を使用)、通常はお勧めしません。 1つのノード証明書を多くのノードで再利用できますが、セキュリティが低下し、ノードを確実に識別できなくなり、他の機能に干渉する可能性があります。

非certnameノード名の設定は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 }
  }
}

これは、インクルードを通知に変更し、ネットワークを$ varに変更し、さまざまな値をテストすることによってテストされました。

[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にデプロイしてさまざまなホストでテストする手間をかけずに、何かが機能するかどうかをすばやく確認する方法を理解できます。

2
Aaron Copley