自動起動が有効になっているDebianクライアントでpuppetバージョン2.7.11を使用しています(START=yes
の/etc/default/puppet
)。 FQDN(dummyclient.work-network.pri
)の証明書を使用してpuppetmasterに接続すると、正常に機能します。たとえば、変更された/etc/default/puppet
ファイルはクライアントに出荷されます。
問題は次のとおりです。再起動後、dummyclient
による新しい証明書要求が表示されます。これは、パペットマスターが完全に異なるマシンと見なします。この理由の1つは、クライアント名とIPアドレスにDHCPを使用しており、puppet-agent
の開始時にネットワークがまだ完全に存在していない可能性があるためと思われます。 (私たちのsyslogでは、NetworkManager
がネームサーバーとドメイン名に関する情報を提供する前にpuppet-agent
が開始されます。)さらなる証拠として、hostname -f
も起動中に空になります(hostname -s
は提供します)正しい答え)。
どうやら、実行中のpuppetプロセスは、システムがどれだけ長く実行されていても、この情報を更新することはありません。 (手動で開始されたパペットの実行では、FQDNが使用されます。)
パペットの起動時間を遅らせたり、ネットワーク情報が変更されるたびにパペットの再起動をトリガーしたりすることは可能ですか? (たとえば、クライアントがネットワーク接続なしで起動された場合。)
または、最適な解決策は、単にクライアントの/etc/hosts
ファイルにFQDNをハードコードすることでしょうか? (しかし、繰り返しになりますが、これはDHCPサーバーの仕事であるはずですよね?)
起動時にサービスが開始される順序を変更することは完全に可能です。ランレベルがどのように機能するか、および起動スクリプトが実行される順序を変更する方法については、 www.debian.org を参照してください。
新しいdhcpリースを取得するたびにパペットを再起動する場合は、/ var/lib/dhcp.leasesで新しいdhcpリースを定期的にチェックし、変更があったときに再起動するcronジョブを配置できます。