我希望将chef zero与vagrant用于配置开发人员环境。这些开发人员参与应用程序开发,不参与维护厨师食谱。
我有一个厨师服务器,作为所有厨师组件的存储库。是否可以使用此厨师服务器配置厨师零,以便开发人员可以利用角色和环境?
我可以使用berkshelf使用chef_api
下载食谱,但角色的运行列表和环境的属性必须在Vagrant文件中复制。
此方法的优点是开发人员可以通过更改Vagrantfile中的环境来复制production
或QA
环境。
答案 0 :(得分:1)
正如您所发现的,Berkshelf是管理食谱的绝佳工具,但没有用于管理角色,环境和数据库等实体的等效工具。这是有道理的,因为这些实体相当于特定于厨师的特定实例的全局数据。
有其他方法可以解决这个问题:
您可以使用来自特殊应用程序"的配方,而不是使用角色。菜谱。每个配方都旨在捕获应用程序的特定组件的运行列表:db,appserver,router等。
例如" myapp :: db"配方:
include_recipe "mysql::server"
include_recipe "database"
include_recipe "myapp::_db_schema"
" myapp :: appserver"配方
include_recipe "apache2"
include_recipe "php"
..
include_recipe "myapp::_appserver_setup1"
include_recipe "myapp::_appserver_setup2"
这种方法相对于角色的主要优点是能够修改对运行列表(dev / test / prod)的控制更改以及使用像Berkshelf这样的工具来控制主厨服务器负载。
如果您拥有管理员凭据,则可以轻松地从Chef服务器导出数据。参见: