如何使用厨师将 opsworks 变量提取到 .env 文件中?
Posted
技术标签:
【中文标题】如何使用厨师将 opsworks 变量提取到 .env 文件中?【英文标题】:How can I pull opsworks variables into a .env file with chef? 【发布时间】:2015-08-18 12:05:32 【问题描述】:我对厨师很陌生,并且正处于拼图的最后一块。我正在尝试使用在 AWS Opsworks 中设置的变量在我的项目根目录中创建一个 .env 文件。我一辈子都想不通。
有没有人对此有任何建议或有效的厨师食谱?我已经用谷歌搜索了我的智慧。
【问题讨论】:
您可以在 .env 配置中引用环境变量。查看此快速指南:mattstauffer.co/blog/… 我可能会错过它,但是这篇博文在哪里谈到将 opsworks 中设置的变量放入 .env 文件中? 【参考方案1】:如果您使用的是 AWS*,通常不会使用 .env
文件。 .env 文件模拟实际在操作系统级别设置的环境变量,这对于您在本地开发或在不允许您自己设置的托管平台上很有用。
因此,您只需在 Opsworks 中为您的应用设置环境变量即可。这些将由 php 从操作系统加载,然后可供您的 Laravel 应用程序使用。
*这样做的原因是您通常在此处存储敏感数据,例如数据库和 API 凭据。您绝对希望将这些与您的代码分开并且不受源代码控制。
编辑:
如果需要,您可以在部署期间像这样编写一个 .env 文件。这将是您的 Chef 脚本的样子:
node[:deploy].each do |application, deploy|
# write out .env file
template "#deploy[:deploy_to]/current/.env" do
source 'env.erb'
mode '0660'
owner deploy[:user]
group deploy[:group]
variables(
:env => deploy[:environment_variables]
)
end
end
这就是您的 .env 文件模板的样子:
<% @env.each do |key, value| %>
<%= key %>=<%= value %>
<% end %>
【讨论】:
我有它们,但它们不工作。我没有使用 opsworks 内置的 Php,由于 nginx,我不得不使用自定义的 PHP。提供的 PHP 部署使用 Apache。所以我设置了它们并编写了代码以在 Laravel 中使用它们,但它没有。 哇,谢谢,太棒了。您是否有机会知道是否可以只运行一次?像迁移?我知道它的题外话 Laravel 迁移只会在开箱后运行一次 - 它会创建一个名为migrations
的数据库表并跟踪已运行和未运行的内容。以上是关于如何使用厨师将 opsworks 变量提取到 .env 文件中?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以从厨师AWS / Opsworks食谱中运行Ansible playbook?