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

How can I pull opsworks variables into a .env file with chef?

我是厨师的新手,正在拼图的最后一块。我正在尝试使用 AWS Opsworks 中设置的变量在我的项目根目录中创建一个 .env 文件。我这辈子都弄不明白。

有人对此有任何建议或可行的厨师食谱吗?我已经用谷歌搜索过了。

如果您使用的是 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 %>