Chef 运行 sh 脚本

Chef run sh script

我在尝试通过 Chef(使用 docker-配置)运行 shell 脚本时遇到问题。

这是我尝试执行脚本的方式:

bash 'shell_try' do
   user "root"
   run = "#{some_path_to_script}/my_script.sh some_params"
   code " #{run} > stdout.txt 2> stderr.txt"
end

(注意这个脚本应该运行另一个脚本,处理并写入日志)

输出中没有错误,但是当我登录机器时 运行 ps aux 进程未 运行ning。

我猜权限(或环境变量)有问题,因为当我手动尝试相同的命令时 - 它有效。

A bash 资源直接 运行s 提供的脚本文本,如果你想 运行 一个长时间的 运行ning 过程,通常你会设置一个Upstart 或 systemd 服务并使用 service 资源启动它。

请参阅您的资源的 Chef 文档:https://docs.chef.io/resource_bash.htmlbash 资源不支持 run 属性。 code 属性的文本是 运行 作为 bash 脚本。默认操作是 run 脚本,除非资源另有说明。

bash 'shell_try' do
  user "root"
  code " #{run} > stdout.txt 2> stderr.txt"
  action :run
end

code 属性被写入一个临时文件,然后 运行 使用资源中指定的属性。

此时 run = "#{some_path_to_script}/my_script.sh some_params" 行什么都不做。

终于找到解决方案(感谢@coderanger)-

  1. 安装主管:

    • 下载主管食谱
    • 添加: include_recipe'supervisor::default'
  2. 将我的服务添加到主管:

    supervisor_service "name" 做 动作:启用 #动作:开始 命令'/path/script.sh start'

    结束

  3. 运行 主管服务

  4. 全部完成!