ruby — шеф-повар OpsWorks развертывает пользовательский json в Stack Overflow

Я пытаюсь передать конфиденциальные данные конфигурации приложения в экземпляры, когда они развернуты, например, информация о подключении к БД.

Вот пользовательский стек 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? Я перепробовал много вещей, но я не могу загрузить свой рецепт.

0

Решение

Похоже, ваша настройка репо настроена так, чтобы содержать одну кулинарную книгу. OpsWorks требует, чтобы в вашем хранилище пользовательских кулинарных книг содержалась коллекция кулинарных книг.

Ознакомьтесь с официальной структурой папок AWS OpsWorks Cookbooks:
https://github.com/aws/opsworks-cookbooks

В твоем случае:

  1. Создайте новую папку внутри своего репо и дайте имя, которое описывает функциональность рецептов. В этом примере мы назовем папку «php_app_config».
  2. Переместите свои рецепты и шаблоны в эту папку, чтобы получить следующие пути из базы вашего репо:
    • php_app_config / Рецепты / appsetup.rb
    • php_app_config / шаблоны / по умолчанию / config.php.erb
  3. Зафиксируйте изменения в своем удаленном репозитории и дайте указание существующим экземплярам OpsWorks загрузить последние пользовательские кулинарные книги.
  4. В своих пользовательских рецептах шеф-повара добавьте рецепт к событию Deploy Lifecycle, используя следующее имя: php_app_config :: appsetup
  5. Разверните ваше приложение.
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]