-1

シェフソロを使用しています。ソロを使用してシェフボールトでナイフを扱うにはどうすればよいですか? 以下をchefフォーラムに投稿しましたが、opscodeの投稿者は無反応で悲しいです。

 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' ]
4

1 に答える 1

1

ソロとクライアントの API が一致していないようです。Chef Vault コードは、クライアント モードで項目が存在しなかった場合にスローされる 2 つの例外をチェックしていますが、ソロ モードでは同じことではありません。具体的にはDataBagItem.load、ソロ コード パスのエラー チェックが不十分です。回避策は、少なくともロードするものがあるように$name_keys、ディスク上にアイテムを作成することです。{}

于 2016-03-03T01:36:52.483 に答える