Перебор атрибута массива в Chef

Я использую подготовку Chef для создания машин в AWS. При создании машины я добавляю к ней атрибут, представляющий собой массив файлов JSON. В рецептах, которые я запускаю, я хочу перебрать этот массив и создать файл шаблона на машине. Машина инициализируется, но при повторении атрибута массива я получаю сообщение об ошибке:

неопределенный метод "каждый" для nil:NilClass

Я попытался просмотреть файл узла, который был создан на моем сервере, и знаете что? Массив файлов JSON был добавлен в файл узла! Я не уверен, почему тогда он продолжает выдавать эту ошибку. Любые идеи?

Пример кода выглядит следующим образом:

machines.rb

    def get_cluster_json(domain_number)
      clusters = []
      @@environment_template['domains'][domain_number]['clusters'].each do |cls|
        clusters << JSON.parse(::File::read(new_resource.template_path + cls))
      end

      return clusters
    end

provisioning_xyz_machine "test-admin" do
            tag "usage:keep"
            attribute "clusters_json", get_cluster_json(domain_counter)
            recipe admin_role
            machine_options get_machine_options()
            ohai_hints ohai_hints
            action $provisioningAction
          end

admin_role.rb

managed_details = []

  node["clusters_json"].each do |cls|
      managed_details << "#{cls['cluster']['name']}" 
  end

Журнал

* template[/tools/appsw/appsautm/config/INTFIN_config] action create[2015-05-12T10:24:13-07:00] INFO: Processing template[/tools/appsw/appsautm/config/INTFIN_config] action create (xyz-environment-cookbook::build_admin line 32)

================================================================================
Error executing action `create` on resource 'template[/tools/appsw/appsautm/config/INTFIN_config]'
================================================================================

Chef::Mixin::Template::TemplateError
------------------------------------
undefined method 'each' for `nil:NilClass`

Resource Declaration:
---------------------
# In /var/chef/cache/cookbooks/xyz-environment-cookbook/recipes/build_admin.rb

  32: template "/tools/appsw/appsautm/config/#{env_name}_config" do
  33:   source "#{env_name}_config.conf.erb"
  34:   cookbook "appsautm-template"
  35:   owner node['xyz-dir-library']['user']
  36:   mode "0755"
  37:        
  38:   variables({     
  39:     :admin_servers=> admin_details,     
  40:     :managed_servers=> managed_details     
  41:   })     
  42: end     
  43:     

Compiled Resource:
------------------
# Declared in /var/chef/cache/cookbooks/xyz-environment-cookbook/recipes/build_admin.rb:32:in `from_file'

person streetsoldier    schedule 11.05.2015    source источник
comment
пожалуйста, вставьте фактический результат вашего запуска шеф-повара вместе с ошибкой, чтобы мы могли видеть, где что-то идет не так.   -  person Tejay Cardon    schedule 12.05.2015
comment
Похоже, ошибка связана с вашим шаблоном, а не с кулинарной книгой. На самом деле, это совершенно не связано с файлами, которые вы разместили. Мне нужно увидеть файл #{env_name}_config.conf.erb и файл build_admin.rb   -  person Tejay Cardon    schedule 12.05.2015
comment
Я проходил это вчера. То, что вы говорите, совершенно верно. Я перебирал переменную, которую никогда не передавал в своем шаблоне. Вы можете опубликовать ответ, и я приму его.   -  person streetsoldier    schedule 13.05.2015


Ответы (1)


Похоже, ошибка связана с вашим шаблоном, а не с кулинарной книгой. На самом деле, это совершенно не связано с файлами, которые вы разместили. Мне нужно увидеть файл #{env_name}_config.conf.erb и файл build_admin.rb, чтобы помочь больше, чем это.

person Tejay Cardon    schedule 13.05.2015
comment
Я не собираюсь помечать ваш ответ, но он действительно должен содержать фактическое исправление. @StreetSoldier, вы можете отредактировать то, что вы на самом деле сделали, чтобы исправить это? - person Patrick M; 13.05.2015
comment
Я добавил это. Я не знаю, почему это было отклонено. - person streetsoldier; 01.06.2015
comment
Было бы лучше отредактировать ваш вопрос с дополнительными деталями. Затем я могу отредактировать свой ответ. Как правило, такие большие правки будут отклонены. - person Tejay Cardon; 02.06.2015