web-dev-qa-db-ja.com

Puppet / Facter「ファクトfqdnを取得できませんでした」:修正または回避する方法

私は人形について学び、VM家でそれを試してみます。私はまだ人形サーバーを使用していません。ただローカルで実行しています。それは大丈夫ですが、毎回実行puppet apply ...、数秒の遅延が発生し、その後メッセージが表示される

warning: Could not retrieve fact fqdn

私はメッセージが遅延にリンクされていると仮定し、それを取り除きたいと思います(遅延-私はメッセージと共に生きることができます)。ソリューションのグーグルは、それが何らかの形でDNSルックアップに関連していることを示しているように見えますが、私はそれについて本当に他に何も見つけることができません。私が望んでいるのは、仮想マシンにマニフェストをすばやく適用して、実験できるようにすることです。どうすればスピードアップできますか?

更新:デバッグ出力に余分な情報は表示されませんが、次のようになります。

$ puppet apply -dv puppet-1.pp 
warning: Could not retrieve fact fqdn
debug: Failed to load library 'rubygems' for feature 'rubygems'
debug: Failed to load library 'selinux' for feature 'selinux'
debug: Puppet::Type::File::ProviderMicrosoft_windows: feature Microsoft_windows is missing
...

更新:パペットにはフォロワーがほとんどいないため、「Ruby」タグを追加しました。これがRubyに属さない場合、またはより適切なタグを知っている場合は、お知らせください。

再度更新:パペットについてもう少し学んだので、このメッセージは「事実」を嗅ぎ分ける「要因」と呼ばれるコンポーネントから来ていることがわかりましたPuppetが実行されているシステム。いくつかの設定オプションを見つけて、 "certname""node_name" 、および "node_name_value" で遊んでみましたが、遅延を得ることができませんでした立ち去る。 fqdnを無視するようにFacterに指示する方法、またはUbuntu 11.10 vmでFacterがfqdnを見つけられるようにする方法を具体的に知っている人はいますか?

進捗:

$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1

これが私のルーターで、Tomato経由でDnsmasqを実行しています。

$ Dig -x 192.168.1.129 192.168.1.1

; <<>> Dig 9.7.3 <<>> -x 192.168.1.129 192.168.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21838
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;129.1.168.192.in-addr.arpa.    IN  PTR

;; ANSWER SECTION:
129.1.168.192.in-addr.arpa. 0   IN  PTR desk-vm-ubuntu-beta.

;; Query time: 14 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sun Oct 16 17:47:47 2011
;; MSG SIZE  rcvd: 77

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27462
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;192.168.1.1.           IN  A

;; ANSWER SECTION:
192.168.1.1.        0   IN  A   192.168.1.1

;; Query time: 11 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sun Oct 16 17:47:47 2011
;; MSG SIZE  rcvd: 45

straceがarpにつながりました。これは5秒間ブロックされ、facterごとに2回呼び出されました。

$ time arp -a
? (10.0.2.2) at 52:54:00:12:35:02 [ether] on eth0

real    0m5.127s
user    0m0.004s
sys     0m0.016s

VMからNATネットワーキングをブリッジに変更したので、ネットワーク上にIPがあり、arpはすぐに戻ります。 (私はネットワーキングの第一人者ではないので、なぜこれが機能したのかわかりませんが、試してみるのは合理的なことのように思えました。)しかし、facterの実行には合計で約4-5秒かかり、ファクトfqdnを取得」。facter -dは、「ドメインの値がまだnil」の出現を最後まで表示します。私はまだ何かが正しくないと考えています。

47
Ryan Stewart

Puppetはfqdnファクトを使用して、実行中のノードを判別するため、判別できない場合は実行できない可能性があります。あなたが説明していることを考えると、デバッグする最も簡単なことは、パペットのコマンドラインの代わりにfacter fqdnです。

「数秒」が正確に5秒に非常に近い場合、単一の不良DNSサーバーがリストされていてDNS構成が壊れている可能性が非常に高くなります。 /etc/resolv.confには何が含まれていますか? resolv.confにリストされている最初のネームサーバーでDig -x $HOSTIP $DNSSERVERIPを実行するとどうなりますか?

facter/fqdn.rbを見ると、fqdnを解決するためにファクターがまさに何をしようとしているのかがわかります。最も便利なバージョンでは、facter/hostname.rbからコードを呼び出すfacter/domainname.rbfacter/util/resolution.rbを使用しています。

正確に何が起こるかは、あなたが持っているファクターのバージョン、OS、そしておそらくあなたがインストールしたものによって異なります。 /bin/hostnameuname(など)を呼び出してDNSルックアップを実行する可能性は非常に高いです。常にstrace -t facter fqdnを使用して、時間がかかっているものを確認できます(タイムスタンプのギャップを探します)

あなたが説明したすべてのことから、問題はパペット/ファクターが本当にドメイン名を持ちたいと思っているのに聞こえます。

domain example.comを/etc/resolv.confに追加するとうまくいきます。 hostname foo.example.comを実行することもトリックを実行する必要があります(ただし、再適用する必要があります)。永続的なソリューションは、正確なOSセットアップに依存します。

33
freiheit

自宅のマシン(Xubuntu)でパペットを実行すると、同じエラーが発生しました。私のために働いたのは、ファイル/etc/hostsの2行目を変更することでした。変更前の最初の2行:

127.0.0.1   localhost
127.0.1.1   box

そして、変更後:

127.0.0.1   localhost
127.0.1.1   box.example.com box

現在、コマンドhostname -fboxの代わりにbox.example.comを返し、人形は幸せです。

26
Teemu Leisti

追加中

  config.vm.hostname = "vagrant.example.com"

Vagrantfileに修正してくれました。

23
shredding

FQDNは「完全修飾ドメイン名」の略です。たとえば、Windowsドメイン(または同様のLDAPベースのドメイン)では、「organization.internal」などのネットワークドメインの名前-コンピューターとサーバーが参加しているドメイン、およびネットワークグループとユーザーアカウントが含まれています。

したがって、おそらく、残りの構成手順を実行するために必要な認証のためにfqdnを取得するのに問題があったと思います。

http://en.wikipedia.org/wiki/Fully_qualified_domain_name

システム/構成管理もその領域に移行するため、ServerFaultでより良い答えが得られる可能性があります。

5
jefflunt

この行を/etc/resolv.confに追加します

domain abc.com

facter fqdnを再度実行します

Fqdnにはドメイン名が必要です。ドメイン名は、インストールしたばかりのubu12にない可能性があります

4
Kit Ho

回避する別の可能な方法は、事実を無効にすることです。

http://www.puppetcookbook.com/posts/override-a-facter-fact.html

FACTER_fqdn=box.example.com facter

Windowsでは、これは

SET FACTER_fqdn=box.example.com
facter fqdn
3
ferventcoder