Chef - 执行vs bash资源

时间:2016-03-07 19:48:29

标签: ruby chef recipe

我使用了coldata资源或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 实际上创建了一个shell脚本(名为bash),其中写有/tmp/chef-script#{date}{#id}

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

在bash&amp;执行块我们需要编写代码来捕获错误,就好像你添加了多个命令&amp;厨师取得最后一个命令的状态。 为了更清楚 - 当Bash / execute块只有一个命令chef捕获问题时,如果下一个命令成功则接受最后一个命令状态。

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