Puppet:ノード名はリバースDNSに依存しているようですか?


20

これを機能させる方法を理解するのに少し問題が発生しているようです。職場のオフィスNATの後ろに構築している新しいサーバーがあり、その逆dnsがにマップされますがoffice.mydomain.com、マシンns2.mydomain.comが人形のためにあることを望みます。

nodes.ppスニペット:

node 'ns2.mydomain.com' inherits basenode {
  info('ns2.mydomain.com')
}

node 'office.mydomain.com' inherits basenode {
  info('office.mydomain.com')
}

そして、クライアント上の私の「puppet.conf」:

[main]
#was node_name=ns2.mydomain.com
#was fqdn=ns2.mydomain.com
certname=ns2.mydomain.com
node_name=cert

サーバー上の私のsyslogは以下を報告します。

Sep 16 22:59:12 support puppetmasterd[2800]: Host is missing hostname and/or domain: office.mydomain.com
Sep 16 22:59:12 support puppetmasterd[2800]: (Scope(Node[office.mydomain.com])) office.mydomain.com
Sep 16 22:59:12 support puppetmasterd[2800]: Compiled catalog for office.mydomain.com in 0.03 seconds
Sep 16 22:59:12 support puppetmasterd[2800]: Caching catalog for ns2.mydomain.com

ns2.mydomain.comこのようなことをせずに設定を取得するにはどうすればよいですか:

node 'ns2.mydomain.com' inherits basenode {
  info('ns2.mydomain.com')
}

node 'office.mydomain.com' inherits 'ns2.mydomain.com' {
  info('office.mydomain.com')
}

更新:この問題は他の問題も引き起こしているようです。たとえばinfo("$fqdn")、マシンがoffice.mydomain.comfqdnの後ろに座っているときにファクトが空である場合、および$operatingsystem。ほとんど事実が適切に発見されていないようです。おそらくNATの問題はありますか?この問題のこの原因を追跡するための提案はありますか?

回答:


26

Aaah、Puppetホスト名の検出。なんて悪夢...

デフォルトでは、使用するnode定義を見つけるためにどの名前が使用されるかは、fqdnファクトの内容に基づいています。どのようなことを実際にマップすることは、いくつかの異なるものに依存して、はい、リバースDNSは、そのうちの一つである-そしてそれは、マシンの自身のホスト名よりも優先です!

ただし、この名前は(通常)証明書の生成時にのみ適用されます。あなたは実際にnode_name変数を誤用しています-それは「cert」または「facter」のいずれかに設定する必要があります。このfqdnパラメーターも非推奨です。

あなたが実際に設定されてやりたいcertnameし、あなたが使用したいノード名にクライアント上のパラメータを、とnode_nameするcert(以降または単に、それを残しcertデフォルトです)。これにより、クライアントが提示する証明書のCNからノード名が取得され、certnameパラメーターにより、ファクターが独自に決定するものではなく、適切な値に設定されます。残念ながら、すでに「間違った」証明書が作成されrm -rf /var/lib/puppet/sslているため、適切な証明書を作成して使用するには、構成をセットアップした後にそれらの証明書を再生成する必要があります(クライアントでPuppetを再実行します)。

これが少し複雑に聞こえる場合、あなたは正しいです-そうです。Puppetへようこそ。


ちょっとそこ-の両方がいる-からくり士や人形を見ているのでnode_name=cert、更新cert_name=ns1.mydomain.comおよびfacter fqdnリターンns1.mydomain.comクライアント上で、私はまだほぼ同じエラーメッセージで終わるのですoffice.mydomain.com
gnarf

1
re:certname、あなたは正しいです、私は誤って覚えており、私が持っているべきドキュメントをチェックしませんでした。固定がないことに関しては、クライアント証明書を再生成する必要があります。それをカバーするために回答を更新しました。
ウォンブル

1
実際に-私の証明書ファイルはns1.mydomain.com.pem、そのCNもns1です...それは「正しい」のですか?office.mydomain.comは、ノード名として証明書名を使用するのではなく、ノード名として使用しているものであり、解析時に事実を取得しようとするたびに明らかになります。おそらく私は何か他のものが欠けていますか?私の事実はいずれも、いずれかのパーサに介して送信しているように見えるんinfo($fqdn)ちょうど私がそれを置く範囲内の空行を示しています。
gnarf

私はあなたが何をしたかわかりませんが、あなたはなんとか本当に素晴らしく何かを骨抜きにすることができました。あなたは独りだと思います。
ウォンブル

別の更新:オフィスLANの背後からすべての「事前設定」を取得し、新しいネームサーバーを稼働させました-正しいリバースDNSの使用を開始するとすぐに、すべての事実が適切に表示されました...
gnarf

5

/etc/hosts最初のオプションとして、127.0.0.1の下で目的のfqdnをリストするための編集で、私は幸運を持っているようです(まだいくつかのテストケースがあります)。それはそれを正しく検出しているようだ/事実を渡す。必要なノードoffice.mydomain.comを継承するというノードを作成する必要があるようです。


これは私のために働いた。(上記のようにsslディレクトリを削除する必要がありました)
-bwizzy

これは私にとってもうまくいき、Puppetのドキュメントでもサポートされています:puppetlabs.com/blog/resolving-dns-issues-DuffJ 15
1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.