2015-10-13 5 views
0

Я пытаюсь передать конфиденциальные данные конфигурации приложения в экземпляры, когда они развернуты, например, информация о подключении к db.OpsWorks chef deploy custom json to php

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

ответ

3

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

Посмотрите на официальную структуру папок AWS OpsWorks поваренных книг: https://github.com/aws/opsworks-cookbooks

В вашем случае:

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

Wow Я знал, что у меня что-то не хватает, все работает как шарм! Нежный шеф-повар, спасибо! – seesoe

Смежные вопросы