在 chef 中引导(添加节点)localhost

在 chef 中引导(添加节点)localhost

问题. 以下命令行

knife bootstrap 127.0.0.1 -r 'recipe[chef-client]' -x user -p password --sudo

返回

Bootstrapping Chef on 127.0.0.1
WARNING: Failed to connect to 127.0.0.1 -- Errno::ECONNREFUSED: Connection refused - connect(2)

预期的该命令将会成功,并且之后

knife node list

将返回

[
"127.0.0.1"
]

SSH 服务器在本地主机上运行良好,且按预期工作。ssh [email protected] -p password

答案1

看起来调用的问题在于您使用选项指定了密码-p,该选项knife bootstrap用于指定备用 ssh 端口。您想使用-P(大写 P),这是为 bootstrap 命令指定密码的正确选项。

而且,正如 Justin 所指出的,如果您已经安装了 chef,并且能够运行“knife”命令,那么 bootstrap 在技术上可能不是必需的。您应该能够启动“chef-client”将您的节点注册到服务器(-K如果尚未安装/在 /etc/chef 中可用,则可能需要带有选项的验证密钥)。一旦注册到您的服务器,您就可以发出knife node run_list add命令将适当的角色/配方添加到运行列表,然后调用另一个chef-client命令使其生效。再说一次,bootstrap所有操作都用一个命令完成,所以这不是一个糟糕的选择。

答案2

并且必须将 IP 和 NODENAME(主机名)添加到 /etc/hosts:

127.0.0.1 NODENAME

然后将 % knife bootstrap 127.0.0.1 -r 'recipe[chef-client]' -x user -p password --sudo 拆分为两个步骤:

步骤1:

% knife bootstrap IP_ADDRESS -x ubuntu -P PASSWORD --sudo

第2步:

% knife ssh name:NODENAME -x ubuntu -P PASSWORD "sudo chef-client"

答案3

如果出现连接被拒绝的情况,则无法打开 SSH 连接,因为:

  • 系统上未运行 SSH。
  • 防火墙规则阻止了对端口 22 的访问。
  • SSH 正在 22 以外的端口上运行。

也就是说,“knife bootstrap”旨在用于使用 Ruby/RubyGems 设置远程系统,安装 Chef 并将其配置为连接到已配置的 chef 服务器(从您的本地 knife 配置)。有关“knife bootstrap”命令的更多信息,请参阅:

hostname -f此外,除非使用 -N NODE_NAME 指定,否则节点名称将是检测到的完全限定域名(通常是 的输出)。

答案4

knife bootstrap 127.0.0.1 -U 用户-N NODE_NAME --sudo --use-sudo-password -y --connection-password 密码

此命令在 localhost 上对我有效。我在https://github.com/chef/chef/issues/9404#issuecomment-597424916

但正如 William 和 Justin 所说,您可以使用chef-client它将您的节点注册到服务器。

相关内容