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
。
在 execute
或 bash
资源之间使用 Chef 执行 shell 脚本的最佳做法是什么?
对于单个脚本,使用 execute
。 bash
资源用于在配方代码中内嵌脚本内容。
在 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
我同时使用了 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
。
在 execute
或 bash
资源之间使用 Chef 执行 shell 脚本的最佳做法是什么?
对于单个脚本,使用 execute
。 bash
资源用于在配方代码中内嵌脚本内容。
在 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