隨着廚師,如何啓動服務,如果它沒有運行或重新啓動,如果它是?廚師 - 根據需要啓動或重新啓動服務
我正在運行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)。 –