【问题标题】:Conceptual purpose of cookbooks, recipes, and run_lists in ChefChef 中食谱、食谱和 run_lists 的概念目的
【发布时间】:2015-10-24 06:46:17
【问题描述】:

我已阅读 Chef 文档并了解什么是食谱、食谱和 run_lists,但仍然很难决定如何将项目组织成食谱、食谱和 run_lists。

这些之间有什么概念上的区别,在什么情况下我会使用除了 1 个食谱和 1 个食谱之外的其他东西? (我在网上找到的大多数示例/教程只有 1 个食谱和 1 个食谱)

示例

我正在尝试制作一个 Chef 项目来启动并运行一个 web 应用程序。具体来说,我想:

  1. 安装 JDK 1.8、Tomcat 7 和 Postgres 9.3
  2. 使用特定数据目录启动 Postgres
  3. 配置 Postgres(创建数据库、创建超级用户等...)
  4. context.xml 文件放入Tomcat
  5. 启动Tomcat

这些都应该写在一本食谱里吗?

这些步骤中的每一个都应该对应一个单独的食谱吗?

如果他们都进入 1 个配方,那么为什么 run_lists 有用?


免责声明:我主要考虑将 Chef 与 knife-solo 一起使用,所以我的困惑可能是由于描述典型部署的文档(例如,具有许多节点的主节点)而我只关心正在特定机器上运行我的食谱。

【问题讨论】:

    标签: chef-infra knife-solo


    【解决方案1】:

    食谱和食谱是您分离关注点和组织代码的方法。将您的应用组件分解为单独的食谱或食谱将使其更具可读性、可测试性和可维护性。

    代码重用是另一个原因。假设您的组织想要构建一本 tomcat 食谱并在团队之间共享。然后其他团队可以将其包含在他们的运行列表中以重用代码。将食谱中的一个食谱与许多其他与 tomcat 无关的食谱共享会更加困难。

    随着您开始扩展您的基础架构,您可能还希望在不同的服务器上移动 tomcat 和 postgres。将它们分开会更容易。

    这些都应该写在一本食谱里吗?

    您可以使用 chef-solo 和一台服务器的用例保持简单并将其放在一本食谱中。

    这些步骤中的每一个都应该对应一个单独的配方吗?

    是的。看看下面的例子。如果它们开始觉得太复杂,可以很容易地将它们移到单独的食谱中。

    如果它们都进入 1 个配方,那么为什么 run_lists 有用?

    run_list 可以拥有您的 utilitiesappdatabase 食谱。通过这种方式,您可以与可能与您的应用程序无关的其他服务器共享您的 utilitiesdatabase 食谱。

    这是一个与您的用例非常相似的示例,其中所有内容都在一本食谱中,堆栈的每个部分都有单独的食谱。这些可以很容易地分解成食谱。 https://github.com/erichelgeson/grails-app-server/tree/master/chef-repo/cookbooks/grailsapp/recipes

    【讨论】:

      猜你喜欢
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多