我已经阅读了Chef文档并了解了烹饪书,食谱和run_lists是什么,但仍然发现很难决定如何将项目组织成食谱,食谱和run_list
s
这些之间的概念差异是什么?在什么情况下我会使用1个食谱和1个食谱以外的东西? (我在网上找到的大多数示例/教程只有1个食谱和1个食谱)
我正在尝试制作一个Chef项目来启动并运行webapp。具体来说,我想:
context.xml
文件放入Tomcat 这些都应该进入一本食谱吗?
这些步骤中的每一步都应该与单独的食谱相对应吗?
如果他们都进入1个食谱,那么为什么run_list
有用?
免责声明:我主要考虑使用带有knife-solo
的Chef,所以我的困惑可能是由于描述典型部署的文档(例如,有很多节点的主人)所有我关心在特定机器上运行我的食谱。
答案 0 :(得分:1)
食谱和食谱是您分离问题和组织代码的方法。将您的应用程序组件分解为单独的配方或烹饪书将使其更具可读性,可测试性和可维护性。
代码重用是另一个原因。假设您的组织想要构建一个tomcat cookbook并在团队之间共享。然后其他团队可以将其包含在他们的运行列表中以重用代码。在烹饪书中与其他许多与tomcat无关的食谱分享一个食谱会更加困难。
当您开始扩展基础架构时,您可能还希望在不同的服务器上移动tomcat和postgres。将它们分开将使这更容易。
这些都应该进入一本食谱吗?
您的厨师独奏和一台服务器的使用案例您可以保持简单并将其放在一本食谱中。
这些步骤中的每一步都应该与单独的食谱相对应吗?
是。看看下面的例子。如果它们开始感觉太复杂,可以很容易地将它们移到单独的烹饪书中。
如果他们都进入1个食谱,那么为什么
run_lists
有用?
run_list
可以有utilities
,app
和database
个烹饪书。这样,您就可以与可能与您的应用无关的其他服务器共享您的utilities
或database
个烹饪书。
这是一个非常类似于您的用例的示例,其中所有内容都在一本食谱中,每个食谱都有单独的食谱。这些很容易被分解成烹饪书。 https://github.com/erichelgeson/grails-app-server/tree/master/chef-repo/cookbooks/grailsapp/recipes