У меня проблема с работающим шеф-поваром 12 в AWS OpsWorks.Создан шаблон шеф-повара до создания службы
В основном один из моих разворачиваемых рецептов во время развертывания создает NGINX-App.conf для каждого развертываемого приложения. Это хорошо работает.
Однако я хочу, чтобы этот шаблон был создан и запущен только в том случае, если NGINX был установлен на сервере, если у меня есть экземпляр без размещения там webserver/nginx.
Мой run_list хотел бы это:
- Nginx пакет, включен Nginx сервис, начал.
- Во время развертывания создается конкретный файл conf для Nginx-app.
Мой рецепт для создания Nginx-приложение конф выглядит следующим образом:
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 с их новой средой шеф-повара. Хотя это странно. Если моя готовая кулинарная книга будет работать целиком до установки Nginx, все остальные команды также потерпят неудачу. – midN
В этом случае, возможно, у шеф-повара OPSworks есть другое поведение на стражах, кажется маловероятным. side note: попробуйте с помощью '{:: File.exists?' (добавьте два двоеточия, чтобы получить root-класс), чтобы использовать класс Ruby, а не Chef, я думаю, что с этим были проблемы, но они не могут точно помнить где. – Tensibai