2011-10-15 38 views
46

我正在學習puppet,並試圖在家裏的虛擬機上進行試驗。我還沒有使用puppet服務器,只是在本地運行東西。它的工作原理好了,但我每次運行puppet apply ...的時候,我得到的幾秒鐘的延遲後,它會顯示消息Puppet/Facter「無法檢索事實fqdn」:如何解決或規避?

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 
... 

更新:我添加了「紅寶石」的標籤,因爲木偶有這麼幾個追隨者。如果這不屬於紅寶石,或者如果你知道一個更好的標籤,讓我知道。

再次更新:已經學到了一些更多的傀儡,我現在明白了,這個消息是從所謂的「Facter」那嗅探出「事實」關於木偶所運行的系統組件來了。我發現了一些配置選項,並使用"certname","node_name""node_name_value"來玩,但我無法讓延遲消失。有誰知道具體如何告訴Facter忽略fqdn或如何讓Facter能夠在Ubuntu 11.10 vm上找到fqdn?

進展:

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

這是我的路由器,它通過番茄運行的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

$ 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 

我從NAT改變了VM的網絡連接,以橋接,所以它現在有一個IP在網絡上,並且arp立即返回。 (我不是網絡專家,所以我不知道爲什麼這個工作,但它似乎是一個合理的嘗試。)但facter仍需要大約4-5秒總計運行,仍然報告「無法檢索事實fqdn」。 facter -d顯示了幾次出現的「域值仍然爲零」,一直到最後。我在想事情還不是很正確。

回答

33

由於puppet使用fqdn事實來確定它正在運行哪個節點,所以如果無法確定它可能無法運行。根據你描述的內容,最簡單的調試是facter fqdn而不是你的木偶命令行。

如果「幾秒」非常接近5秒,很可能是因爲列出的單個錯誤的DNS服務器而導致DNS配置中斷。什麼在/etc/resolv.conf中?如果使用resolv.conf中列出的第一個名稱服務器運行dig -x $HOSTIP $DNSSERVERIP,會發生什麼情況?

如果你看看facter/fqdn.rb,你可以看到究竟是什麼因素試圖解決fqdn。在我最喜歡的版本中,它使用facter/hostname.rbfacter/domainname.rb,它們調用facter/util/resolution.rb的代碼。

到底發生了什麼事情取決於你有什麼版本,什麼操作系統,也可能是你已經安裝了什麼。調用/bin/hostname,uname(等)並進行DNS查找都很有可能。您總是可以使用strace -t facter fqdn來查看什麼花費了時間(查找時間戳中的空白)

從您所描述的所有內容來看,聽起來像問題是puppet/facter真的想要一個域名你沒有一個,你只有一個裸體主機名。

domain example.com添加到/etc/resolv.conf應該有所斬斷。運行hostname foo.example.com也應該這樣做(但需要重新應用)。永久性解決方案取決於確切的OS設置。

+3

啊! 'strace'找到了一些東西:'/ usr/lib/ruby​​/1.8/facter/arp.rb'正在調用阻塞5秒的'arp ​​-a'。我將resolv.conf,dig output和arp輸出添加到我的答案中。現在速度更快,但仍然不快。在一臺臺式機內核上,4-5秒是否適合虛擬機? –

+0

它試圖很難找到一個域名,並嘗試一切方式失敗。給它一個域,它會更快成功。稍後我會添加一些答案。 – freiheit

+1

由於vm是一個桌面發行版,我在我的路由器中設置了一個域並重新啓動了網絡管理器,並將域添加到resolv.conf本身。這照顧了域和fqdn。我從來沒有發現需要配置一個域名。現在最多隻有4秒 - 比它好得多,我不確定它會好得多。謝謝你的幫助! –

5

FQDN代表「完全合格的域名」。例如,在Windows域(或其他類似的基於LDAP的域)中,它將是您網絡域的名稱,例如「organization.internal」 - 您的計算機和服務器加入的域,以及域包含您的網絡組和用戶帳戶。

因此,它可能無法獲得執行其餘配置步驟所需的某些身份驗證的fqdn,這是我的猜測。

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

這有可能是你會得到ServerFault一個更好的答案,因爲系統/配置管理也跨越到他們的境界。

+1

對,我明白fqdn是什麼。我已經看到跡象表明它與auth相關,但實際上並沒有阻止任何事情的發生。這一切都有效。它只是引入了一個惱人的延遲。這也不是Windows盒子或Windows域名。它是運行Ubuntu 11.11的VirtualBox VM。關於ServerFault的好主意 - 如果我在這裏沒有更多的輸入,我可能會看看我是否可以弄清楚如何在那裏移動問題。我在我的問題中添加了更多的細節。 –

+1

啊,呃。爲了遷移問題,人們基本上必須投票才能將其作爲主題關閉(建議遷移到ServerFault)。如果你沒有得到任何牽引力,你可能不得不自己發佈。 – jefflunt

+0

很酷。謝謝您的幫助。 –

25

我的家用機器上運行puppet(Xubuntu)時出現同樣的錯誤。對我有用的是改變文件/etc/hosts的第二行。變更前的前兩行:

127.0.0.1 localhost 
127.0.1.1 box 

後變:現在

127.0.0.1 localhost 
127.0.1.1 box.example.com box 

,命令hostname -f回報box.example.com代替box,和木偶是幸福的。

+1

我不得不在短名稱/ etc/hosts之前找到完整的名稱,否則它仍然不起作用。 – flickerfly

+4

確保您的重定向順序正確。你必須警惕像做'127.0.1.1盒子www.box.com' –

4

追加這一行到/etc/resolv.conf

domain abc.com 

運行facter FQDN再次

FQDN需要域名,這在新安裝的ubu12

23

也許缺少添加

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

Vagrantfile固定對我來說。

+1

這是符合這個網頁上的信息:http://blog.doismellburning.co.uk/2013/01/19/升級木偶功能於遊民盒/ – demaniak

相關問題