问题。以下命令行
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这一切都用一个命令完成,所以这不是一个糟糕的选择。
如果连接被拒绝,则无法打开 SSH 连接,因为:
也就是说,“knife bootstrap”旨在用于使用 Ruby/RubyGems 设置远程系统,安装 Chef 并将其配置为连接到已配置的 Chef 服务器(从本地 Knife 配置)。有关“knife bootstrap”命令的更多信息,请参阅:
此外,节点名称将是检测到的完全限定域名(通常为 的输出hostname -f),除非使用 -N NODE_NAME 指定。