我使用了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}
。
在code
或execute
资源之间使用Chef执行shell脚本的最佳做法是什么?
答案 0 :(得分:6)
对于单个脚本,请使用execute
。 bash
资源用于在配方代码中内嵌脚本内容。
答案 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