木偶/ Facter“无法检索事实fqdn”:如何修复或规避?
我正在学习木偶,并试图在家里的虚拟机上进行试验。 我还没有使用puppet服务器,只是在本地运行。 它工作正常,但每次我运行puppet apply ...
,我得到了几秒钟的延迟,之后它显示消息
warning: Could not retrieve fact fqdn
我假设这条消息与延迟有关,我想摆脱它(延迟 – 我可以忍受这个消息)。 谷歌search解决scheme似乎表明,这是与DNS查询有关,但我真的不能find任何其他的东西,这似乎令人惊讶。 我所要的只是能够快速地在我的虚拟机上应用清单,所以我可以尝试。 我如何加快速度?
更新:我没有看到任何额外的信息在debugging输出,但它看起来像这样:
$ 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,或者如果你知道一个更好的标签,让我知道。
再次更新:在了解了更多关于木偶的信息之后,我现在明白了这个信息是来自“Facter”组件的,它嗅出了Puppet运行系统的“事实”。 我发现了一些configuration选项,并使用“certname” , “node_name”和“node_name_value ”来玩弄 ,但我无法得到延迟消失。 有谁知道具体如何告诉Facter忽略fqdn或如何让Facter能够在Ubuntu 11.10 vm上findfqdn?
进展:
$ 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
调用两次:
$ 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
我将虚拟机从NATnetworking改为桥接,现在networking上有一个IP,现在arp
立即返回。 (我不是networking专家,所以我不知道为什么这个工作,但这似乎是一个合理的尝试。) facter
仍然需要大约4-5秒总计运行,仍然报告“无法检索事实fqdn”。 facter -d
显示了“域值仍然为零”的几次出现,一直到最后。 我在想事情还不是很正确。
由于木偶使用fqdn事实来确定它运行的是哪个节点,所以如果无法确定,它可能无法运行。 根据你所描述的,debugging最简单的东西是facter fqdn
而不是你的puppet命令行。
如果“几秒”非常接近5秒,则很可能是因为列出的单个错误的DNS服务器而导致DNSconfiguration中断。 什么在/etc/resolv.conf? 如果使用resolv.conf中列出的第一个名称服务器运行dig -x $HOSTIP $DNSSERVERIP
,会发生什么情况?
如果你查看facter/fqdn.rb
你可以看到究竟是什么尝试去解决fqdn。 在我使用的版本中,我使用的是facter/hostname.rb
和facter/domainname.rb
,它们调用了来自facter/util/resolution.rb
代码。
到底发生了什么事将取决于你有什么版本,什么操作系统,也可能是你已经安装了什么。 调用/bin/hostname
, uname
(等)和做DNS查找都很可能。 您总是可以使用strace -t facter fqdn
来查看正在花费的时间(查找时间戳记中的空白)
从你所描述的一切,听起来像问题是傀儡/ facter真的想要一个域名,你没有一个,你只是一个裸体的主机名。
将domain example.com
添加到/etc/resolv.conf应该可以做到。 运行hostname foo.example.com
也应该做的(但将需要重新应用)。 永久性解决scheme取决于确切的OS设置。
在我的家用机器上运行木偶(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
,puppet很高兴。
添加
config.vm.hostname = "vagrant.example.com"
我的Vagrantfile
为我Vagrantfile
了。
FQDN代表“完全合格的域名”。 例如,在Windows域(或其他类似的基于LDAP的域)中,它将是networking域的名称,例如“organization.internal”(您的计算机和服务器所连接到的域)包含您的networking组和用户帐户。
所以,在执行剩下的configuration步骤时,可能会遇到麻烦,需要进行一些authentication,这是我的猜测。
http://en.wikipedia.org/wiki/Fully_qualified_domain_name
有可能你会在ServerFault上得到更好的答案,因为系统/configurationpipe理也跨越了他们的领域。
将这行添加到/etc/resolv.conf
domain abc.com
再运行fqdn
Fqdn需要域名,这可能在你新安装的ubu12中丢失
另一个可能的解决办法是推翻这个事实。
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