AWS Custom Cookbooks 将文件复制到实例

Posted

技术标签:

【中文标题】AWS Custom Cookbooks 将文件复制到实例【英文标题】:AWS Custom Cookbooks Copy File to instance 【发布时间】:2016-02-18 07:29:45 【问题描述】:

我们将 OpsWorks 用于我们的 AWS 实例。我在 git repo 上有几本使用 berkshelf 的食谱。据我了解,当实例启动(或您更新自定义食谱)时,自定义厨师食谱会被复制到每个服务器实例。

我正在寻找一个厨师食谱,它将文件从 git repo 复制到服务器实例的目录中。

一个例子是: 我的 db.php 文件不在我的 OpsWorks 应用程序的 git 存储库中。我把它放在另一个 git repo 中,那里有我的定制厨师食谱/食谱。我希望能够调用一个厨师食谱,它将获取该 db.php 文件并将其复制到 /srv/www/app/current/config/db.php 到本地实例上。

这可能吗?

【问题讨论】:

【参考方案1】:

您想将其放在食谱中的files/ 下,并在您的食谱代码中使用cookbook_file 资源。如果您想动态生成一些资源,也可以使用 template 资源。

【讨论】:

这很好用。但是,来自 Chef 的 cookbook_file 文档指出文件可以位于 files/ 目录中。 AWS OpsWorks Chef 不会使用 files/ 根目录中的任何文件。它需要在 files/default/ 或 files/ubuntu/.Chef 12.0 中添加了对删除 default/ 位的支持,并且 Linux 上的 OpsWorks 似乎仍在运行 11.x。 Laaaaaame,但事实如此。【参考方案2】:

有一个 remote_file 资源。

但我不认为直接从 repo 获取一个文件是一个好主意。 最好在机器上克隆该 repo 并检查特定版本。其他选择是将给定文件放在 S3 上并定期更新。

【讨论】:

以上是关于AWS Custom Cookbooks 将文件复制到实例的主要内容,如果未能解决你的问题,请参考以下文章

如何为 AWS API Gateway Custom Authorizer 提供 Lambda 权限?

猪用户定义函数中的 aws Amazon S3 客户端凭证

Managing Chef Cookbooks the Berkshelf way

ruby cookbooks_mailx_spec_unit_default_spec.rb

带有可选字段的 serverless-aws-documentation 模型定义?

AWS CLI 和 BOTO3 开发工具包(权限问题)