OpsWorks Chef 将自定义 json 部署到 php
OpsWorks chef deploy custom json to php
我正在尝试在实例部署时将敏感的应用配置数据传递给实例,例如数据库连接信息。
这是自定义堆栈 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"
}
}
}
}
我有这样的回购设置
recipes/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 模板
templates/default/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 下放置什么?我已经尝试了很多东西,但我似乎无法加载我的食谱。
您的存储库设置似乎配置为包含一本食谱。 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。
- 在层的自定义 Chef 食谱中,使用以下名称将食谱添加到 Deploy Lifecycle 事件:php_app_config::appsetup
- 部署您的应用程序。
我正在尝试在实例部署时将敏感的应用配置数据传递给实例,例如数据库连接信息。
这是自定义堆栈 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"
}
}
}
}
我有这样的回购设置
recipes/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 模板 templates/default/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 下放置什么?我已经尝试了很多东西,但我似乎无法加载我的食谱。
您的存储库设置似乎配置为包含一本食谱。 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。
- 在层的自定义 Chef 食谱中,使用以下名称将食谱添加到 Deploy Lifecycle 事件:php_app_config::appsetup
- 部署您的应用程序。