Chef共享配置文件

时间:2014-10-11 18:26:08

标签: amazon-web-services chef logfiles amazon-cloudwatch

我刚刚学习了Chef,我对处理可能需要通过多个配方修改的单个配置文件的情况的最佳方法感到困惑。我的具体案例是AWS Cloudwatch Logs。它有一个配置文件(我没有看到包含其他文件),需要列出它收集的所有日志文件。我有不同的配方(例如Web服务器,邮件服务器等),这将导致创建不同的日志文件。当这些配方运行时,我希望将其日志文件添加到AWS Logs配置文件中。但是将它附加到文件似乎并不安全,因为如果重新运行配方,它将再次添加。我想保留有关安装创建它们的软件的配方中存在哪些日志文件的逻辑。我希望能够将一个配方添加到运行列表中并将其日志添加到配置文件中(反之亦然),而邮件服务器配方不必知道Web服务器创建的文件等等。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您需要拥有实际创建配置文件的CloudWatch配方。您的每个其他配方都可以添加一些节点属性以指示他们需要添加哪些日志文件,然后CloudWatch cookbook可以获取这些属性并使用它们来构建配置文件。
例如:

在网络服务器配方中

node['logs']['nginx']['somevhost'] = %w(/path/to/log /path/to/other/log)

在云观察配方中

node['logs'].each do |app|
  app.each do |component|
    <add to some collection structured for CloudWatch's config file>
  end
end

更好

我建议你看一下infochips的silverware食谱。它有一个很好的库,你可以用来在webserver和mailserver cookbook中宣传你的日志文件,然后在CloudWatch食谱中发现它们。