如何使用 Chef 将 opsworks 变量拉入 .env 文件?

The*_*zle 1 php nginx amazon-web-services aws-opsworks laravel-5

我对厨师很陌生,正在拼图的最后一块。我正在尝试使用在 AWS Opsworks 中设置的变量在我的项目根目录中创建一个 .env 文件。我一辈子都搞不清楚。

有没有人对此有任何建议或工作厨师食谱?我用谷歌搜索了我的智慧。

edc*_*dcs 5

.env如果您使用 AWS*,通常不会使用文件。.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
Run Code Online (Sandbox Code Playgroud)

这是您的 .env 文件模板的样子:

<% @env.each do |key, value| %>
<%= key %>=<%= value %>
<% end %>
Run Code Online (Sandbox Code Playgroud)