Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra 厨师长-根据需要启动或重新启动服务_Chef Infra - Fatal编程技术网

Chef infra 厨师长-根据需要启动或重新启动服务

Chef infra 厨师长-根据需要启动或重新启动服务,chef-infra,Chef Infra,对于Chef,如果服务未运行,我如何启动它,如果服务已运行,如何重新启动它 我正在运行Ubuntu12.04,目前正在处理的服务是PostgreSQL。停止和启动服务几乎可以正常工作,但Chef似乎会在完全停止并失败之前尝试启动服务。通常,在安装服务时使用操作:start,以确保服务在Chef运行后运行,请参阅 修改需要重新启动服务才能激活更改的文件时,使用操作:reload或:restart(取决于init脚本提供的内容)。然后看起来是这样的: template "/etc/postgresq

对于Chef,如果服务未运行,我如何启动它,如果服务已运行,如何重新启动它


我正在运行Ubuntu12.04,目前正在处理的服务是PostgreSQL。停止和启动服务几乎可以正常工作,但Chef似乎会在完全停止并失败之前尝试启动服务。

通常,在安装服务时使用
操作:start
,以确保服务在Chef运行后运行,请参阅

修改需要重新启动服务才能激活更改的文件时,使用操作
:reload
:restart
(取决于init脚本提供的内容)。然后看起来是这样的:

template "/etc/postgresql/pg.conf" do
  source "pg.conf.erb"
  notifies :restart, "service[postgres]"
end

更多信息。

以下是我用来有条件地执行docker容器的几个(重新)启动类型操作之一的代码概要。如果@giannis nohj的“始终重新启动”建议由于某种原因不起作用,则可以对其进行调整,以适应服务(重新)启动的情况

my_file=文件。。。
my_image=docker_image“my image”do
回购“我的形象”
动作:拉
结束
ruby_块“计算docker操作”do
布洛克道
action=如果my_image.updated_被上次的_操作更新?
:重新部署
elsif my_file.updated_by_last_action?
:重新启动
其他的
:运行
结束
资源(“docker_容器[我的容器])。延迟的_操作(操作)
结束
结束
docker_集装箱“我的集装箱”怎么办
回购“我的形象”
行动:没什么
结束

通常,启动脚本的“重启”功能在使用“重启”作为操作时,首先停止服务,然后启动服务。如果它没有运行,它只会启动它。所以我建议你检查一下你的启动脚本,并在chef中使用“重启”操作…不幸的是重启会导致错误。服务没有运行让人不高兴。好吧,您可以做的一件事是修复启动脚本,使其按您喜欢的方式工作,并使用chef的cookbook_文件(或模板)资源首先用启动脚本替换原始启动脚本,然后运行重新启动postgresql的资源,或者,由于资源无法重新启动,添加一个retry()。当说修复启动脚本时,我的意思是检查它的重启功能。他们经常在“停止”操作之后运行“启动”操作。如果这不起作用,因为在运行开始操作时,停止尚未完成,那么您应该修复该问题。例如,创建一个检查进程PID的循环。如果未找到,则退出该循环,然后运行start操作。可能会添加一个超时。。我必须指出,我经常像您一样使用服务资源的重启操作,它工作得非常完美,尽管我很少修改启动脚本。更清楚的是,我有一个编写postgrestory.conf的方法。此配方在创建从属服务器时运行,也在主服务器发生任何更改时运行,因此可以更新recovery.conf以反映新的主IP地址等。在第一种情况下,postgres必须从未启动过-因此我不能使用restart。也许我应该有两个非常类似的配方—(更新conf和启动服务)和(更新配置并重新启动服务)。不是很干,但可以工作。