OpsWorks和#39;内置食谱版本?

时间:2014-04-12 18:16:24

标签: php chef package-managers chef-solo aws-opsworks

在OpsWorks中设置堆栈时,它是否会锁定当前内置的cookbook版本,还是每次触发生命周期事件时都会使用最新版本?

对于自定义食谱,我了解OpsWorks在提供食谱时会缓存提供的食谱,而不是每次都提取最新版本,但我想知道内置食谱是否也是如此。

由于某些原因,我对此表示担忧。如果更新cookbook以安装不同版本的Apache或PHP或稍微改变其默认配置,该怎么办?如果我在一个使用旧配方的层中设置一个新实例并最终得到配置略有不同的多个服务器会怎么样?

此外,似乎没有一种方法可以自定义安装哪个PHP5版本,所以我只是受到ubuntu软件包管理器的支配。决定使用最新的稳定版本?

我确实想继续使用最新最好的软件版本,但是在我能够测试我的应用程序在新版本中运行之后,我想在我自己的时间部署它们。

1 个答案:

答案 0 :(得分:1)

  

在OpsWorks中设置堆栈时,它是否会锁定当前内置的cookbook版本,还是每次触发生命周期事件时都会使用最新版本?

当您配置新机器时,会同时在服务器上请求内置的cookbook +自定义cookbook。它只会更新,只需要自定义食谱更新。这就是为什么建议不要将整个AWS菜谱复制到您的自定义菜谱中。只有您正在修改的内容才能从标准的社区菜谱更新中受益。

  

出于某些原因,我对此很担心。如果更新cookbook以安装不同版本的Apache或PHP或稍微改变其默认配置,该怎么办?如果我在一个使用旧配方的层中设置一个新实例并最终得到配置略有不同的多个服务器会怎么样?

这不仅仅是一个BANE,也是一个好处。这取决于你如何看待这一点。可以做什么性能改进,以及引入错误。这需要由您的运营人员保持同步。

您只需将重复(或自定义)版本放在食谱中的相同位置即可覆盖内置菜谱的各个部分。 Converge option

或者更复杂但更确定的方式:

  1. 实施自定义食谱食谱。
  2. 将opsworks cookbooks作为子模块导入cookbook文件夹内的文件夹。
  3. 符号链接您需要将版本控制到主文件夹的食谱
  4. 根据需要评估和更新特定的
  5. 即:

    cd cookbook
    git submodule add https://github.com/aws/opsworks-cookbooks external-cookbooks/opsworks-cookbooks
    ln -s external-cookbooks/opsworks-cookbooks/rails rails 
    

    通过这种方式,您可以更新并保持对基础架构代码的版本控制。制作并评估更改,仅在您

    之后导入更改

    我仍然建议使用只有您需要硬编码的微小更改的聚合模式。这意味着重复很少,您可以从社区版本的烹饪书中获得更新。

    如果您正在使用使用UBUNTU方式安装PHP的食谱 - 那么您将怜悯回购中的内容。如果您正在使用另一个执行自定义编译版本的那个,那么您可以编译特定版本。您可能必须编写自己的OR或找到构建它的那个,并让您通过cookbook上的属性指定版本。