AWS Opsworks с использованием "environment_variables" в рецептах развертывания

Я хочу использовать environment_variables приложения для установки некоторых свойств, но мой экземпляр не работает при настройке, читая документацию ( http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-events.html) Я нашел это:

"Setup includes Deploy; it runs the Deploy recipes after setup is complete.".

Это часть моего сценария Deploy

if node['deploy']['ws']['application'] && node['deploy']['ws']['environment_variables']['is_root_app'] == 'true'
  web_app node['deploy']['ws']['application'] do
    server_name node['fqdn']
    server_aliases node['deploy']['ws']['domains']
    template 'web_app.conf.erb'
    docroot node.default['apache']['docroot_dir']
    ssl_enabled node['deploy']['ws']['ssl_support']
    enable true
  end
end

Это журнал установки

NoMethodError
-------------
undefined method `[]' for nil:NilClass

Cookbook Trace:
---------------
/var/chef/runs/254b8caa-cd70-4525-a2fd-71044afdf62d/local-mode-cache/cache/cookbooks/WebService/recipes/deploy_app.rb:8:in `from_file'

Relevant File Content:
----------------------
/var/chef/runs/254b8caa-cd70-4525-a2fd-71044afdf62d/local-mode-cache/cache/cookbooks/WebService/recipes/deploy_app.rb:

1:  # 
2:  # Cookbook Name:: WebService 
3:  # Recipe:: default 
4:  # 
5:  # Copyright (c) 2016 The Authors, All Rights Reserved. 
6:   
7:   
8>> if node['deploy']['ws']['application'] && node['deploy']['ws']['environment_variables']['is_root_app'] == 'true' 
9:    web_app node['deploy']['ws']['application'] do 
10:      server_name node['fqdn'] 
11:      server_aliases node['deploy']['ws']['domains'] 
12:      template 'web_app.conf.erb' 
13:      docroot node.default['apache']['docroot_dir'] 
14:      ssl_enabled node['deploy']['ws']['ssl_support'] 
15:      enable true 
16:    end 
17:  else 

Какова цель запуска рецептов Deploy после установки, если я еще не развернул приложение??? Где можно использовать environment_variables, если не в рецептах Deploy???

1 ответ

Решение

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

развертывание завершается неудачно, когда вы пытаетесь получить доступ к атрибутам, которые не установлены

Вы можете использовать http://ruby-doc.org/core-1.9.3/Hash.html, чтобы проверить это

например

if node[:deploy].has_key?("ws")

end

То же самое для ваших переменных env

Другие вопросы по тегам