从 URL 动态加载厨师食谱

从 URL 动态加载厨师食谱

我正在 AWS 上部署一个 Web 应用程序。

我打算使用 chef 来构建 AMI,然后将其投入生产。

我想让 Chef 监控存储在 simpleDB 中的 URL。该 URL 将指向 S3 中的 tarball。会有不同的 URL,一个用于配置 tarball,一个用于代码 tarball。当我更新 simpleDB 中的 URL 时,我希望 chef 能够发现这一点并提取和应用配置/部署代码。

这可能吗?以前有人做过类似的事情吗?还是我需要编写自己的代码?我认为 Chef 可以监控 URL,但让它从 simpleDB 加载该 URL 的最佳方法是什么?

答案1

没问题。数据库对此并非绝对必要(因为我建议您将这些设置存储为节点属性……这样您可以随时更改节点设置,而 Chef 将确保合规性),但是,我假设您将数据库用于其他用途并将其保留在基本架构中。这是我建议的流程:

  1. 存储[:deploy][:configurl][:deploy][:codeurl]作为节点上的属性
  2. 让 chef 执行两个单独的 SQL 查询来从数据库中检索每个 URL
  3. 将数据库中的 url 结果与节点属性进行比较
  4. 其余项目都包裹在 not_if 结果匹配中
  5. remote_file 如果本地 tarball 不存在,则为 url
  6. 安塔尔
  7. 做所有必要的事情来利用 tar 文件

相关内容