在厨师中引导(添加节点)本地主机

V_V*_*V_V 6 chef

问题。以下命令行

knife bootstrap 127.0.0.1 -r 'recipe[chef-client]' -x user -p password --sudo
Run Code Online (Sandbox Code Playgroud)

返回

Bootstrapping Chef on 127.0.0.1
WARNING: Failed to connect to 127.0.0.1 -- Errno::ECONNREFUSED: Connection refused - connect(2)
Run Code Online (Sandbox Code Playgroud)

预计此命令会成功并在它之后

knife node list
Run Code Online (Sandbox Code Playgroud)

将返回

[
"127.0.0.1"
]
Run Code Online (Sandbox Code Playgroud)

SSH 服务器在 localhost 上工作正常,ssh user@127.0.0.1 -p password并按预期工作。

小智 5

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

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


jti*_*man 0

如果连接被拒绝,则无法打开 SSH 连接,因为:

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

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

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