我正在 AWS 上部署一个 Web 应用程序。
我打算使用 chef 来构建 AMI,然后将其投入生产。
我想让 Chef 监控存储在 simpleDB 中的 URL。该 URL 将指向 S3 中的 tarball。会有不同的 URL,一个用于配置 tarball,一个用于代码 tarball。当我更新 simpleDB 中的 URL 时,我希望 chef 能够发现这一点并提取和应用配置/部署代码。
这可能吗?以前有人做过类似的事情吗?还是我需要编写自己的代码?我认为 Chef 可以监控 URL,但让它从 simpleDB 加载该 URL 的最佳方法是什么?
答案1
没问题。数据库对此并非绝对必要(因为我建议您将这些设置存储为节点属性……这样您可以随时更改节点设置,而 Chef 将确保合规性),但是,我假设您将数据库用于其他用途并将其保留在基本架构中。这是我建议的流程:
- 存储
[:deploy][:configurl]
并[:deploy][:codeurl]
作为节点上的属性 - 让 chef 执行两个单独的 SQL 查询来从数据库中检索每个 URL
- 将数据库中的 url 结果与节点属性进行比较
- 其余项目都包裹在 not_if 结果匹配中
- remote_file 如果本地 tarball 不存在,则为 url
- 安塔尔
- 做所有必要的事情来利用 tar 文件