そこにいる人形の専門家のために、私はファクトネットワークに基づいて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"
}
^上記は機能しますか?ありがとうございました
これは、示されているようには機能しません。まず、正規表現は適切ではありませんが、ノードマッチャーもホストの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にデプロイしてさまざまなホストでテストする手間をかけずに、何かが機能するかどうかをすばやく確認する方法を理解できます。