【问题标题】:"sudo: chef-client: command not found" when executed with knife from workstation“sudo: chef-client: command not found”从工作站用刀执行
【发布时间】:2019-07-16 12:29:15
【问题描述】:

当我在工作站上使用刀触发厨师客户端时,我在节点上运行厨师客户端时遇到问题。我在 macOS 上,我的节点也是 macOS。一般来说,knife 似乎对我有用,因为如果我执行,例如,knife ssh tags:my-mac-mini' 'pwd' -x ‘myUser’ -a ipaddress -P ‘myPasswrod’ 它连接到标记有my-mac-mini 的节点,然后打印具有工作目录的节点列表。但是当我尝试执行knife ssh tags:my-mac-mini' 'sudo chef-client' -x ‘myUser’ -a ipaddress -P ‘myPasswrod’ 时,它会分别为每个节点打印出sudo: chef-client: command not found。此外,我的节点是自举的,当我登录到特定节点时,我可以在所有节点上运行 chef-client。 我很确定我在我的设置中遗漏了一些东西,但我真的不明白可能出了什么问题。有什么想法吗?

【问题讨论】:

  • 您的节点上似乎没有安装 chef-client。您可能必须使用 chefdk 安装它。
  • @bitsapien 感谢您的回复。很遗憾。事实并非如此;我的节点是自举的,我可以在所有节点上运行 chef-client。让我用这些细节更新问题
  • 在这种情况下,运行 knife 命令的 shell 不正确。我建议您传入 chef-client 二进制文件的完整路径。应该看起来像 /usr/bin/chef-client
  • @bitsapien 你的意思是说,我需要在我的节点上指定厨师客户端的路径吗?让我试试看,虽然我不确定是否需要它,因为当我通过 ssh 使用与刀命令相同的凭据进行连接时,我可以在节点上执行 sudo chef-client
  • @olyv:如果您使用的是 chef ruby​​gem 而不是 chefdk,请尝试在 knife 命令之前附加 bundle exec 并让我们知道它是否有帮助...

标签: chef-infra knife


【解决方案1】:

如果您运行命令的 shell 在其路径中没有指定的二进制文件,则可能会发生这种情况。您可能必须指定二进制文件的完整路径。

既然你说你可以ssh 进入你的节点并运行chef-client,运行下面的代码来获取二进制文件的完整路径

$ which chef-client

这个输出会是这样的

/path/to/chef-client

现在,通过knife 运行时,请使用此完整路径而不是单独使用chef-client

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-13
    • 2013-09-22
    • 2013-01-26
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    相关资源
    最近更新 更多