从工作单或节点引导时,chef-client未运行

时间:2015-04-24 04:21:53

标签: chef

我在linux服务器上安装了厨师服务器包,在AMAZON EC2上也有一个linux工作站和一个linux节点。我正在尝试在工作站上运行以下bootstrap命令:

chef exec knife bootstrap 10.0.xx.xx -x ec2-user --sudo -i keyfile.pem --node-name Chef_Test_Node

但是Chef-client没有在节点上工作。低于错误:

----------------------------------------------------------------------
Network Error:

There was a network error connecting to the Chef Server: Error connecting to https://xx.xx.xx.xx/organizations/xxx/clients - getaddrinfo: Name or service not known
Relevant Config Settings:

chef_server_url "https://xx.xx.xx.xx/organizations/xxx"

If your chef_server_url is correct, your network could be down.
-----------------------------------------------------------------------

我能够运行刀客户端列表或节点列表,证明我的工作站没有网络问题

请您告诉我如何解决此问题。

由于

2 个答案:

答案 0 :(得分:1)

我遇到了这个问题,因为我在本地局域网上运行CHEF而没有运行正确的DNS服务,因此我不得不依赖/ etc / hosts文件来解析主机名。在我添加的新节点上,我忘了使用与Chef集群中每个服务器对应的条目为/ etc / hosts文件播种,因此无法解析“chef-server”名称。

FIX: 一旦我将正确的条目放在/ etc / hosts文件中,所有内容都应该像它应该的那样运行。

    /etc/hosts:

127.0.0.1       localhost
192.168.1.165   chef-admin
192.168.1.160   chef-server
192.168.1.161   chef-node1
192.168.1.162   chef-node2
192.168.1.163   chef-node3
192.168.1.164   chef-node4

答案 1 :(得分:0)

代理设置在客户端节点上的/etc/client.rb file中设置(当然您只有后引导程序)。

我认为你不想那样。如果你实际上有一个NAT,HTTP代理设置对你没有任何好处。此外,你仍然需要解决鸡和蛋的自助问题。

如果你实际上有一个https代理,你可以:

  • 暂时将弹性IP附加到您的实例和引导程序。 (注意使用安全组仅允许来自端口22的传入 你的厨师服务员)
  • 启动后,您可以删除弹性IP 并更新client.rb以指向您的https代理。

(另请注意,亚马逊将向您收取未附加的弹性IP费用)

如果您没有http代理但实际上有NAT,则应执行以下操作:

  • 1)确认工作站可以在服务器上执行刀具命令(类似:刀用户列表)
  • 2)确认服务器可以ssh到客户端(如果你有nat,你需要一个传入的转发规则来实现这一点)
  • 3)确认客户端可以通过https连接到服务器

测试:curl -k https://server/organizations/organization_name

一旦您知道哪个连接失败,您就可以开始了解原因。