厨师执行 bash 命令并输入

chef execute bash command and enter input

我想通过 chef 执行这个命令:

knife client delete client_name

命令确实是从 chef 运行的:

bash 'delete client from chef server' do
    cwd ::File.dirname('/apps/chef-repo') # not sure if relevant
    code <<-EOH
        knife client delete client_name
    EOH
  end

但是小刀需要确认输入

STDOUT: Do you really want to client_name? (Y/N)

如何执行点击'Y'?

您正在寻找 -y(对确认提示说“是”)。即

 knife client delete client_name -y

检查刀具common options

-y, --yes

Respond to all confirmation prompts with “Yes”. knife is not to ask for confirmation.

其他两个答案在直接意义上是正确的,但没有理由shell像这样开刀。您可以直接使用 Chef 的 HTTP 客户端:

node.chef_server_rest.delete_rest('/clients/client_name')

(我想,有一段时间了)