【发布时间】:2013-11-03 09:35:01
【问题描述】:
我有一堆食谱文件,一些定义为食谱,一些定义为角色。例如,顶级角色是:
运行列表( “角色[el-drupal-cookbook::drupal_lamp_dev]”, “食谱[drupal-site-jnl-el-cookbook::default]” )
上面的意图是将服务器设置为drupal Lamp服务器,然后在其上安装特定的网站。
我是从 Vagrant 调用这一切的,使用 add_role 请求,并且图书馆管理员将所有的部分放在一起。 Cookbook 路径是“cookbooks”,role_path 是“roles”。
执行此操作时,它会找到顶级角色(与 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"
【问题讨论】:
-
您能分享一下您的 Vagrantfile 的那一部分吗?我想知道,为什么你说你的角色在食谱中。对于角色,每个角色都应该有一个 *.rb 文件。对于食谱,您在 cookbooks/ 下有子目录。
-
附加的 vagrantfile 片段。在源(lib-chef 收集的)中,角色和配方目录彼此相邻,每个目录中都有适当的文件。 L-C 将这些收集到食谱文件夹中......
标签: chef-infra vagrant chef-solo cookbook