2016-03-03 2 views
-1

Я использую софт для шеф-повара. Как я могу справиться с ножом с помощью шеф-повара с помощью соло? Я разместил ниже на форуме шеф-повара, но те, кто на opscode, не согласны с грустью сказать.Нож, соло и хранилище - data_bag_item.rb: 129: in `from_hash ': undefined метод` delete' для nil: NilClass (NoMethodError)

knife vault create secrets database '{"username": "root", "password": "mypassword"}' --mode solo -VV 

INFO: Using configuration from /home/ubuntu/workspace/zen-chef/chef-repo/knife.rb 
/usr/local/lib/ruby/gems/2.3.0/gems/chef-12.7.2/lib/chef/data_bag_item.rb:129:in `from_hash': undefined method `delete' for nil:NilClass (NoMethodError) 
    from /usr/local/lib/ruby/gems/2.3.0/gems/chef-12.7.2/lib/chef/data_bag_item.rb:161:in `load' 
    from /usr/local/lib/ruby/gems/2.3.0/gems/chef-vault-2.8.0/lib/chef-vault/item_keys.rb:116:in `load' 
    from /usr/local/lib/ruby/gems/2.3.0/gems/chef-vault-2.8.0/lib/chef-vault/item.rb:73:in `load_keys' 
    from /usr/local/lib/ruby/gems/2.3.0/gems/chef-vault-2.8.0/lib/chef-vault/item.rb:265:in `load' 
    from /usr/local/lib/ruby/gems/2.3.0/gems/chef-vault-2.8.0/lib/chef/knife/vault_create.rb:58:in `run' 
    from /usr/local/lib/ruby/gems/2.3.0/gems/chef-12.7.2/lib/chef/knife.rb:416:in `block in run_with_pretty_exceptions' 
    from /usr/local/lib/ruby/gems/2.3.0/gems/chef-12.7.2/lib/chef/local_mode.rb:44:in `with_server_connectivity' 
    from /usr/local/lib/ruby/gems/2.3.0/gems/chef-12.7.2/lib/chef/knife.rb:415:in `run_with_pretty_exceptions' 
    from /usr/local/lib/ruby/gems/2.3.0/gems/chef-12.7.2/lib/chef/knife.rb:214:in `run' 
    from /usr/local/lib/ruby/gems/2.3.0/gems/chef-12.7.2/lib/chef/application/knife.rb:148:in `run' 
    from /usr/local/lib/ruby/gems/2.3.0/gems/chef-12.7.2/bin/knife:25:in `<top (required)>' 
    from /usr/local/bin/knife:23:in `load' 
    from /usr/local/bin/knife:23:in `<main>' 

Вот мой knife.rb файл

current_dir = File.dirname(__FILE__) 
user  = ENV['OPSCODE_USER'] || ENV['USER'] 

root = File.absolute_path(File.dirname(__FILE__)) 
chef_repo_path rootroot = File.absolute_path(File.dirname(__FILE__)) 
chef_repo_path root 

log_level    :debug 
log_location    STDOUT 
node_name    `hostname` 
cache_type    'BasicFile' 
cache_options(:path => "#{ENV['HOME']}/.chef/checksums") 
cookbook_path [ "#{root}/cookbooks","#{root}/site-cookbooks","#{root}/berks-cookbooks" ] 
cookbook_copyright  'Zen' 
cookbook_license   'apachev2' 
cookbook_email   'test' 
environment_path   "../#{current_dir}/environments" 
data_bag_path '../../zen-settings' 
knife[:vault_admins] = [ 'test' ] 
+0

Когда вы говорите, что вы отправили на форумы Chef, что вы имеете в виду? Я не вижу связанной темы на discourse.chef.io. – coderanger

+0

Как вы дошли до ответа ниже, Тампа? – halfer

+0

Вниз, см. Выше. – halfer

ответ

1

Похоже, это несоответствие в API, между соло и клиентом. Chef Vault code проверяет два исключения, которые будут выбрасываться, если элемент не существует в клиентском режиме, но не тот, который является одним и тем же в режиме соло. Более конкретно, проверка ошибок в DataBagItem.load недостаточно для кода сольного кода. Обходным путем было бы создать элементна диске с помощью только {}, чтобы он мог что-то загружать как минимум.

+0

Создал https://github.com/chef/chef/pull/4655, чтобы сделать вещи немного лучше. – coderanger

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