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.html。 bash
资源不支持 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)-
安装主管:
- 下载主管食谱
- 添加:
include_recipe'supervisor::default'
将我的服务添加到主管:
supervisor_service "name" 做
动作:启用
#动作:开始
命令'/path/script.sh start'
结束
运行 主管服务
全部完成!
我在尝试通过 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.html。 bash
资源不支持 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)-
安装主管:
- 下载主管食谱
- 添加: include_recipe'supervisor::default'
将我的服务添加到主管:
supervisor_service "name" 做 动作:启用 #动作:开始 命令'/path/script.sh start'
结束
运行 主管服务
全部完成!