Cloud-init无法检索元数据

我使用Puppet设置了OpenStack,并且在大多数情况下工作得很好,但是我遇到了一个相当有害的问题:我的Ubuntu客户端(可能还有其他人)在启动时无法检索元数据。

我旋转了一个Cirros实例来进行一些快速testing并发现

  • networking运行正常。 实例可以ping通网关,也可以ping外部世界。
  • http://169.254.169.254/2009-04-04/meta-data/的请求会产生预期的结果,表明实例实际上可以到达元数据服务器。

我认为这可能是个别实例的问题,所以我创build了另外一个Ubuntu 14.10客户端,但是它有一个完全相同的问题:

 util.py[WARNING]: Failed fetching metadata from url `http://169.254.169.254/2009-04-04/meta-data/` init: Error while reading from descriptor: Broken pipe 

版本:* Ubuntu 14.10服务器64位(主机和客人)*新星2.17.0(冰室)

谢谢你的时间!

编辑

我从零开始重build了我的OpenStack安装,但是没有解决这个问题,希望在之前的设置中出错。 不幸的是,重新安装并没有解决问题。 当然,这并不意味着我在这个安装过程中重复的并不是一个错误。 尽pipe如此,看起来奇怪的是,Cirros图像可以抓取该URL,但是Ubuntu 14.10服务器映像不能,即使它获得IP。

这个问题的罪魁祸首是我的MTU设置。 我总是忘记处理MTU,但我遇到了一个小文章(某处,如果我find它,我会张贴它)概述了同样的问题。 我的解决scheme是指定

 dnsmasq_config_file = /etc/neutron/dnsmasq.conf 

在我的/etc/neutron/dhcp_agent.iniconfiguration中。 /etc/neutron/dnsmasq.conf文件仅包含

 dhcp-option=26,1424 

现在,所有的实例都可以毫无问题的获取元数据! 尽pipe1424不是一个硬性和快速的价值。 我只是select了它,因为我不想确定什么是合适的价值。