随着厨师,如何启动服务,如果它没有运行或重新启动,如果它是?厨师 - 根据需要启动或重新启动服务
我正在运行Ubuntu 12.04,我目前正在处理的服务是PostgreSQL。停止和启动它几乎可行,但Chef似乎在它完全停止并失败之前尝试启动它。
随着厨师,如何启动服务,如果它没有运行或重新启动,如果它是?厨师 - 根据需要启动或重新启动服务
我正在运行Ubuntu 12.04,我目前正在处理的服务是PostgreSQL。停止和启动它几乎可行,但Chef似乎在它完全停止并失败之前尝试启动它。
通常,您在安装服务时使用action :start
以确保它在大厨运行后运行,请参阅Service resource。
当您修改需要重新启动服务以使更改处于活动状态的文件时,请使用操作:reload
或:restart
(取决于init脚本提供的内容)。然后,它看起来是这样的:
template "/etc/postgresql/pg.conf" do
source "pg.conf.erb"
notifies :restart, "service[postgres]"
end
下面是我用于有条件地执行Docker容器的几个(重新)启动类型操作之一的代码大纲。在@ giannis-nohj总是重新启动的建议由于某种原因不起作用的情况下,它可以适用于服务(重新)启动的情况。
my_file = file ...
my_image = docker_image 'my-image' do
repo 'my-image'
action :pull
end
ruby_block 'compute docker action' do
block do
action = if my_image.updated_by_last_action?
:redeploy
elsif my_file.updated_by_last_action?
:restart
else
:run
end
resources('docker_container[my-container]').delayed_action(action)
end
end
docker_container 'my-container' do
repo 'my-image'
action :nothing
end
通常启动脚本的“重启”功能在使用“重启”作为动作时,首先会停止服务并启动它。如果它没有运行,它只会启动它。所以我建议你检查一下你的启动脚本并使用厨师的“重启”动作...... –
不幸的是,重新启动会导致错误。服务不运行并不开心。 – Jake
那么,你可以做的一件事就是修复启动脚本,只要你喜欢,并使用厨师的cookbook_file(或模板)资源首先用你的启动脚本替换原始启动脚本,然后运行重新启动postgresql的资源或,由于资源无法重新启动,请添加重试(http://docs.opscode.com/chef/resources.html)。 –