【问题标题】:chef-client is not running while bootstraping from workstration or on a node从工作站或节点引导时 chef-client 未运行
【发布时间】:2015-08-27 11:55:38
【问题描述】:

我已经在 linux 服务器上安装了 chef server 包,并且在 AMAZON EC2 上还有一个 linux 工作站和一个 linux 节点。我正在尝试在工作站上运行以下引导命令:

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

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

请告诉我如何解决这个问题。

谢谢

【问题讨论】:

  • 您正在引导的节点无法到达xx.xx.xx.xx
  • 非常感谢您的回复.. 但是这个问题的可能原因是什么,因为我已经打开了所有必需的端口,即 http 和 https 都是从服务器、工作站和节点打开的。
  • 登录目标节点并尝试curl https://xx.xx.xx.xx
  • 是否必须通过代理服务器才能连接到远程服务器?许多公司网络都要求这样做,在这种情况下,您可以设置 http_proxy 和 https_proxy 的环境变量,以允许厨师也通过您的代理服务器。
  • 非常感谢您的回复...是的,这可能是我使用 NAT 服务器访问互联网时的问题。请告诉我我需要在哪里设置 http_proxy 和 https_proxy 设置以允许厨师? ?

标签: chef-infra


【解决方案1】:

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

修复: 一旦我在 /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

【讨论】:

  • 谢谢! /etc/hosts 设置在主厨服务器和我的工作站/开发环境中。没想到将它添加到我的节点测试服务器。
【解决方案2】:

代理设置在客户端节点上的/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

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

【讨论】:

  • 因为我使用的是 NAT 服务器,请在下面找到我的答案: 1) 确认工作站可以在服务器上执行刀命令(例如:刀用户列表) 答:是的,我能够执行每把刀工作站上的命令和执行 curl -k server/organizations/organization_name 后,它给了我以下输出:你是 ip-10-xx-xx-xx:443/signup">redirected</a>.</…>
  • 2) 确认服务器可以 ssh 到客户端 Ans: Yes, after execution "chef exec knife bootstrap 10.xx.xx.xx -x ec2-user --sudo -i key.pem --node -name Chef_Test_Node" ,它可以 ssh 到客户端并给出以下输出: Connecting to 10.xx.xx.xx 10.xx.xx.xx Starting first Chef Client run... 10.xx.xx.xx 开始 Chef客户端,版本 12.2.1 10.xx.xx.xx 使用验证器密钥为 Chef_Test_Node 创建新的客户端身份。 10.xx.xx.xx [2015-05-05T08:10:00+00:00] 错误:连接到 ip-10-xx-xx-xx/organizations/organization_name/clients 时出错,重试 1/5
  • 3) 确认客户端可以通过 https 连接到服务器 Ans:我已经测试过:curl -k server/organizations/organization_name,但出现以下错误:curl:(6)无法解析主机:ip- 10-xx-xx-xx 请帮我解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
  • 2019-07-16
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多