Роли бродячего шеф-повара: шеф-повар-соло, не нашедший ролей в моей кулинарной книге

У меня есть куча файлов кулинарных книг, некоторые из которых определены как рецепты, а некоторые - как роли. Так, например, роль верхнего уровня:

run_list ("роль [el-drupal-cookbook :: drupal_lamp_dev]", "recipe [drupal-site-jnl-el-cookbook :: default]")

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

Я вызываю все это из Vagrant, используя запрос add_role, и библиотекарь-повар собирает все вместе. Путь к кулинарной книге - «поваренные книги», а путь_роли - «роли».

Когда это выполняется, он находит роль верхнего уровня (которая находится в том же каталоге, что и Vagrantfile), но не те, которые находятся в разных кулинарных книгах.

Поскольку роли и рецепты хранятся в кулинарных книгах, которые должен обслуживать путь к кулинарным книгам, я, очевидно, что-то упускаю. Кто-нибудь может помочь?

Я прикрепил сообщение об ошибке ниже:

[2013-10-24T14:37:28+00:00] INFO: Setting the run_list to ["recipe[apt]", "recipe[git]", "role[drupal-jnl-el]", "recipe[drupal-site-jnl-el-cookbook::disable-cdn]"] from JSON
[2013-10-24T14:37:28+00:00] ERROR: Role el-drupal-cookbook::drupal_lamp_dev (included by 'role[drupal-jnl-el]') is in the runlist but does not exist. Skipping expand.

================================================================================
Error expanding the run_list:
================================================================================


Missing Role(s) in Run List:
----------------------------
* el-drupal-cookbook::drupal_lamp_dev included by 'role[drupal-jnl-el]'


Original Run List
-----------------
* recipe[apt]
* recipe[git]
* role[drupal-jnl-el]
* recipe[drupal-site-jnl-el-cookbook::disable-cdn]

РЕДАКТИРОВАТЬ:

В vagrantfile говорится:

# define where things have been collected together by librarian-chef
chef.cookbooks_path = ["cookbooks"]
chef.roles_path = ["roles"]

# this installs most of the infrastrucutre required to support a drupal instance
chef.add_recipe "apt" # add this so we have updated packages available
chef.add_recipe "git"
# chef.add_recipe "openvpn"  # vpn needed, but using tunnelblick on mac host instead.

# This role represents our default Drupal development stack.
chef.add_role   "drupal-jnl-el"

person rivimey    schedule 24.10.2013    source источник
comment
Не могли бы вы поделиться этой частью вашего Vagrantfile? Мне интересно, почему вы говорите, что ваши роли находятся в кулинарных книгах. Для ролей должен быть файл * .rb в ролях / each. Для поваренной книги у вас есть подкаталоги ниже cookbooks /.   -  person StephenKing    schedule 24.10.2013
comment
Фрагмент vagrantfile прилагается. В исходном коде (который собирает lib-chef) есть каталоги ролей и рецептов рядом друг с другом, с соответствующими файлами в каждом. L-C собирает их в папку с поваренными книгами ...   -  person rivimey    schedule 25.10.2013


Ответы (2)


Это говорит

Missing Role(s) in Run List:
----------------------------
* el-drupal-cookbook::drupal_lamp_dev included by 'role[drupal-jnl-el]'

Это означает, что roles/drupal.{rb,json} пытается включить role[el-drupal-cookbook::drupal_lamp_dev], который, однако, должен быть recipe[el-drupal-cookbook::drupal_lamp_dev].

person StephenKing    schedule 25.10.2013
comment
Надеюсь, проблема наконец в этом :-) - person StephenKing; 25.10.2013
comment
Я думаю, что в основном у меня это получилось: по сути, не используйте роли для чего-то общего, потому что вы не можете вложить их в кулинарные книги, в отличие от рецептов. Я запутался, потому что в кулинарных книгах, которые я унаследовал, у меня есть ../ {атрибуты, рецепты, роли, шаблоны, ...}, которые заставили меня думать иначе. - person rivimey; 25.10.2013
comment
Не понимаю. Роли могут быть вложенными. Например. run_list (роль [some_other_role]). - person StephenKing; 26.10.2013
comment
Я имел в виду, что, в отличие от рецептов, роли существуют в одном пространстве имен и одном каталоге. Насколько я могу судить, пути поиска ролей нет. - person rivimey; 27.10.2013

Вам нужно добавить эту роль в свой список ролей ножа, попробуйте

knife role from file your_role_name.js

По умолчанию команда будет искать эту роль в каталоге role / (в корне вашего проекта).

person Ryan    schedule 25.10.2013
comment
Привет, Райан, спасибо за мысль, но я использую шеф-повар, а не сервер ... есть ли эквивалент для этого? - person rivimey; 25.10.2013
comment
хм .. просто чтобы еще раз проверить, вы установили role_path в solo.rb? - person Ryan; 25.10.2013
comment
Я не уверен ... Я ничего не делал в solo.rb, но, конечно, Бродяга мог ?? Как мне проверить? - person rivimey; 25.10.2013
comment
role_path в solo.rb получен из определения vagrantfile, указанного выше: chef.roles_path, но переведен для работы со стороны виртуальной машины. Представление виртуальной машины - это / tmp / vagrant-chef-1 / chef-solo-1 / cookbooks и vagrant-chef-1 / chef-solo-1 / roles, а представление хоста - это ./cookbooks и ./roles, где. - это каталог, содержащий Vagrantfile и Cheffile. - person rivimey; 25.10.2013