2015-12-10 5 views
0

У меня проблема с работающим шеф-поваром 12 в AWS OpsWorks.Создан шаблон шеф-повара до создания службы

В основном один из моих разворачиваемых рецептов во время развертывания создает NGINX-App.conf для каждого развертываемого приложения. Это хорошо работает.

Однако я хочу, чтобы этот шаблон был создан и запущен только в том случае, если NGINX был установлен на сервере, если у меня есть экземпляр без размещения там webserver/nginx.

Мой run_list хотел бы это:

  1. Nginx пакет, включен Nginx сервис, начал.
  2. Во время развертывания создается конкретный файл 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 будет уже установлен.

Никто не знает, что может быть неправильным здесь?

С уважением, Андрес

ответ

0

Таким образом, очевидно, я сделал это работает так:

  1. Перемещенные «шаблон» часть к оригинальной «Nginx» сварить в качестве определения и оставила only_if части там.
  2. Внутри Deploy cookbook/recipe Я просто вызываю это пользовательское определение из кулинарной книги «nginx», которая создает шаблон.

Таким образом, существует файл и условие работает должным образом, я понятия не имею, почему ...

это что-то делать с помощью шаблона из другой кулинарной книги запускается на выполнение, прежде чем все остальное?

+0

Это не имеет никакого отношения к тому, в какой поваренной книге это, а больше к тому, чтобы быть переделанным в определение. Я чувствую, что ваш run_list не в том порядке, в котором вы думаете, что это так, как должно было работать. – Tensibai

+0

Aight спасибо! Тогда это может показаться ошибкой AWS OpsWorks с их новой средой шеф-повара. Хотя это странно. Если моя готовая кулинарная книга будет работать целиком до установки Nginx, все остальные команды также потерпят неудачу. – midN

+1

В этом случае, возможно, у шеф-повара OPSworks есть другое поведение на стражах, кажется маловероятным. side note: попробуйте с помощью '{:: File.exists?' (добавьте два двоеточия, чтобы получить root-класс), чтобы использовать класс Ruby, а не Chef, я думаю, что с этим были проблемы, но они не могут точно помнить где. – Tensibai