0
我在AWS OpsWorks中運行廚師12時遇到問題。在創建服務之前處理廚師模板
基本上,在部署過程中,我的一個Deploy Recipes爲每個部署的應用程序創建一個NGINX-App.conf。這個工作正常。
但是我想要創建並運行此模板只有當NGINX安裝在服務器上,因爲我有一個沒有放置webserver/nginx的實例。
我run_list想這樣的:
- Nginx的包,啓用nginx的服務啓動。
- 部署期間創建Nginx-app特定的conf文件。
我創建Nginx的應用程序內的conf食譜是這樣的:
template 'nginx.conf' do
path "/etc/nginx/conf.d/#{params[:something]}.conf"
source 'nginxapp.conf.erb'
cookbook 'nginx'
owner 'root'
group 'root'
mode 0644
notifies :reload, 'service[nginx]'
only_if { File.exists?('/usr/sbin/nginx') }
end
,如果我加入「only_if」的情形,因爲它似乎是這個模板被處理前沒有安裝Nginx的失敗。
如果我第二次運行,它將正常工作,因爲nginx已經安裝。
有人知道這裏可能是錯的嗎?
問候, 安德烈斯
它與烹飪書無關,更多的是被移植到定義中。我覺得你的run_list並不是按照你認爲的那種順序運行。 – Tensibai
Aight謝謝!然後,它可能看起來像他們的新廚師環境的AWS OpsWorks的錯誤。雖然這很奇怪。如果我的Deploy Cookbook在Nginx安裝之前運行,那麼所有其他命令也會失敗。 – midN
在這種情況下,也許OPSworks廚師版在衛兵上有不同的行爲,聽起來不太可能。注意:嘗試使用'{:: File.exists?'(前置兩個冒號來獲得根文件類)來確保使用Ruby類而不是Chef的類,我認爲有問題但不能完全記住哪裏。 – Tensibai