Chef - 执行 vs bash 资源

Chef - execute vs bash resource

我同时使用了 execute 资源或 bash 资源。

两者实现相同的结果:

bash 'Execute my script' do 
  user 'root'
  cwd  '/mydir'
  code <<-EOH
    ./myscript.sh
  EOH
end

execute 'Execute my script' do 
  user    'root'
  cwd     '/mydir'
  command './myscript.sh'
end

我看到的唯一区别是 bash 实际上创建了一个 shell 脚本(名为 /tmp/chef-script#{date}{#id}),其中写有 code

executebash 资源之间使用 Chef 执行 shell 脚本的最佳做法是什么?

对于单个脚本,使用 executebash 资源用于在配方代码中内嵌脚本内容。

在 bash & execute 块中,我们需要编写代码来捕获错误,就好像您添加了多个命令一样,厨师会获取最后一条命令的状态。 为了更清楚 - 当 Bash/execute 块只有一个命令时,厨师会发现问题,如果下一个命令成功,则它采用最后一个命令状态。

bash 'Execute my script' do 
  user 'root'
  cwd  '/mydir'
  code <<-EOH
    ./myscript.sh
    ls srini ##This will fail
    ls  ## this will be successful
  EOH
end

execute 'Execute my script' do 
  user    'root'
  cwd     '/mydir'
  command './myscript.sh'
  command 'ls srini' #will fail
  command 'ls' # will be successful
end