OpsWorks 厨师将自定义 json 部署到 php

Posted

技术标签:

【中文标题】OpsWorks 厨师将自定义 json 部署到 php【英文标题】:OpsWorks chef deploy custom json to php 【发布时间】:2016-01-10 14:45:27 【问题描述】:

我正在尝试在实例部署时将敏感的应用配置数据传递给实例,例如数据库连接信息。

这是自定义堆栈 json 字符串


  "deploy": 
    "development": 
      "app" : 
        "api_key" : "data",
        "api_secret" : "data",
        "gmail_account" : "data",
        "gmail_account_password" : "data"
      ,
      "database" : 
        "db_hostname" : "data",
        "db_username" : "data",
        "db_password" : "data",
        "db_database" : "data"
      
    
  

我有这样的回购设置

食谱/appsetup.rb

node[:deploy].each do |application, config|
  template "#deploy[:deploy_to]/current/config.php" do
    source "config.php.erb"
    mode 0660
    group deploy[:group]

    if platform?("ubuntu")
      owner "www-data"
    elsif platform?("amazon")   
      owner "apache"
    end

    variables(
      :api_key    => (deploy[:app][:api_key] rescue nil),
      :api_secret => (deploy[:app][:api_secret] rescue nil),
      :gmail_account          => (deploy[:app][:gmail_account] rescue nil),
      :gmail_account_password => (deploy[:app][:gmail_account_password] rescue nil),
      :db_hostname => (deploy[:database][:db_hostname] rescue nil),
      :db_username => (deploy[:database][:db_username] rescue nil),
      :db_password => (deploy[:database][:db_password] rescue nil),
      :db_database => (deploy[:database][:db_database] rescue nil)
    )
  end
end

然后是 php 模板 模板/默认/config.php.erb

$config = array();
$config['api_key'] = '<%= @api_key%>';
$config['api_secret'] = '<%= @api_secret%>';
$config['gmail_account'] = '<%= @gmail_account%>';
$config['gmail_account_password'] = '<%= @gmail_account_password%>';

$db = array();
$db['default']['hostname'] = '<%= @db_hostname%>';
$db['default']['username'] = '<%= @db_username%>';
$db['default']['password'] = '<%= @db_password%>';
$db['default']['database'] = '<%= @db_database%>';

我会在 Custom Chef Recipes Deploy 下放置什么?我尝试了很多东西,但似乎无法加载我的食谱。

【问题讨论】:

【参考方案1】:

您的存储库设置似乎已配置为包含一个说明书。 OpsWorks 要求您的自定义说明书存储库包含说明书集合。

查看官方 AWS OpsWorks Cookbooks 文件夹结构: https://github.com/aws/opsworks-cookbooks

在你的情况下:

    在您的存储库中创建一个新文件夹,并提供一个描述配方功能的名称。在本例中,我们将文件夹命名为“php_app_config”。 将您的食谱和模板移动到此文件夹中,从而从您的存储库的基础中生成以下路径: php_app_config/recipes/appsetup.rb php_app_config/templates/default/config.php.erb 将您的更改提交到您的远程存储库并指示您现有的 OpsWorks 实例下载最新的custom cookbooks。 在您层的自定义厨师食谱中,使用以下名称将食谱添加到部署生命周期事件:php_app_config::appsetup 部署您的应用程序。

【讨论】:

哇,我知道我错过了一些基本的东西,一切都像魅力一样!整洁的厨师,谢谢!

以上是关于OpsWorks 厨师将自定义 json 部署到 php的主要内容,如果未能解决你的问题,请参考以下文章

在 opsworks 中的自定义 json 中设置环境变量

Opsworks 自定义厨师食谱上的 Codeigniter ci_sessions

如何通过 cloudformation 部署 opsworks 应用程序?

markdown 将自定义厨师食谱从V4迁移到V5

如何使用厨师将 opsworks 变量提取到 .env 文件中?

Opsworks 厨师 12 道菜谱