2016-11-24 14 views
0

シェフのレシピから暗号化されたデータバッグを読み込もうとしていますが、いくつか問題があります。シェフのレシピで暗号化されたデータバッグを読むにはどうすればいいですか?

あなたは、私がテストの目的のために分離されたデータ袋に暗号化されたバージョンを入れて見ることができるように私は、このように

openssl rand -base64 512 > test/integration/default/encrypted_data_bag_secret 
knife data bag from file test ../data_bags/system_user/poweruser.json --secret-file test/integration/default/encrypted_data_bag_secret 
knife data bag show test ccbuildub -Fj > ../data_bags/test/poweruser.json 

を秘密にして作成しました。その結果databagは次のようにされています。そして、私はこのスニペットを私のレシピで働いている

{ 
    "id": "poweruser", 
    "username": { 
    "encrypted_data": "48y/E3yzDWXvbD/J72tZuvS5jpDwnA8RvI6bJhnQHFU=\n", 
    "iv": "O+WKxIAXH1pDTBqGluGCsw==\n", 
    "version": 1, 
    "cipher": "aes-256-cbc" 
    }, 
    "password": { 
    "encrypted_data": "JHHSoaIm9b8FxCOfTfrQRb0YmoabCcTcXXx/0nwU/j3gQCXd1kEHbxpEHZMB\n92A6\n", 
    "iv": "Cn5ct0xt4PKHptz+WmbFmw==\n", 
    "version": 1, 
    "cipher": "aes-256-cbc" 
    }, 
    "domain": { 
    "encrypted_data": "bhFJ9FRTlIuo1s7JZEs79SkNSxDw+9OJtBxkpMdoxOorYqxBbo6lZA3+BP3u\njWk1\n", 
    "iv": "BvOD0l4ohTwOJka74rlFVw==\n", 
    "version": 1, 
    "cipher": "aes-256-cbc" 
    } 
} 

ruby_block "do something" do 
    block do 
     secret = Chef::EncryptedDataBagItem.load_secret(Chef::Config[:encrypted_data_bag_secret]) 
     decryptedObject = Chef::EncryptedDataBagItem.load("test","poweruser") 
     print "DECRYPT : " + decryptedObject.to_s 
     [...] 
    end 
end 

私はこのレシピで厨房を実行しようとすると、私はこのエラーを取得:

[2016-11-24T11:32:23+00:00] ERROR: ruby_block[do something] (SPMLinuxBuilder::mountTiny line 11) had an error: Net::HTTPServerException: 404 "Not Found" 

スタックトレース自体は本当に助けていません。

>>>> Caused by Net::HTTPServerException: 404 "Not Found" 
/opt/chef/embedded/lib/ruby/2.3.0/net/http/response.rb:120:in `error!' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/http.rb:150:in `request' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/http.rb:115:in `get' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/data_bag_item.rb:155:in `load' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/encrypted_data_bag_item.rb:123:in `load' 
/tmp/kitchen/cache/cookbooks/SPMLinuxBuilder/recipes/mountTiny.rb:14:in `block (2 levels) in from_file' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider/ruby_block.rb:35:in `block in action_run' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/mixin/why_run.rb:52:in `add_action' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider.rb:176:in `converge_by' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider/ruby_block.rb:34:in `action_run' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider.rb:145:in `run_action' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/resource.rb:622:in `run_action' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/runner.rb:69:in `run_action' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/runner.rb:97:in `block (2 levels) in converge' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/runner.rb:97:in `each' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/runner.rb:97:in `block in converge' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/resource_collection/resource_list.rb:94:in `block in execute_each_resource' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/resource_collection/stepable_iterator.rb:114:in `call_iterator_block' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/resource_collection/stepable_iterator.rb:85:in `step' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/resource_collection/stepable_iterator.rb:103:in `iterate' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/resource_collection/stepable_iterator.rb:55:in `each_with_index' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/resource_collection/resource_list.rb:92:in `execute_each_resource' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/runner.rb:96:in `converge' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/client.rb:669:in `block in converge' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/client.rb:664:in `catch' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/client.rb:664:in `converge' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/client.rb:703:in `converge_and_save' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/client.rb:283:in `run' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application.rb:294:in `block in fork_chef_client' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application.rb:282:in `fork' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application.rb:282:in `fork_chef_client' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application.rb:247:in `block in run_chef_client' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/local_mode.rb:44:in `with_server_connectivity' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application.rb:235:in `run_chef_client' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application/client.rb:464:in `sleep_then_run_chef_client' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application/client.rb:451:in `block in interval_run_chef_client' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application/client.rb:450:in `loop' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application/client.rb:450:in `interval_run_chef_client' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application/client.rb:434:in `run_application' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application.rb:59:in `run' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application/solo.rb:226:in `run' 
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/bin/chef-solo:25:in `<top (required)>' 
/opt/chef/bin/chef-solo:54:in `load' 
/opt/chef/bin/chef-solo:54:in `<main>'[[email protected] ~]$ exit 

(私はsearch(:test, "id:poweruser").firstを使用してみた場合、私は暗号化された値を得る)私は秘密が正しいことを知っている(私はそれをプリントアウトした場合、それは私の秘密ファイルの正確な同じ値が含まれている)とデータバッグが正しいことをエラーに関する詳細情報を得て解決することはできますか?

ありがとう、 Michele。

答えて

1
  1. なぜあなたはruby_blockの中でデータバッグを読みたいのですか? https://docs.chef.io/data_bags.html#load-with-recipe-dsl

  2. 404エラーは、サーバー上にデータバッグが存在しないことを示しています。

  3. デフォルトのシークレットファイルの場所を使用すると、暗号化されたデータバッグの読み取りは完全に透過的です。 data_bagまたはdata_bag_itemの方法を使用することができます。

If 'secret' is not specified, the chef-client will look for a secret at the path specified by the encrypted_data_bag_secret setting in the client.rb file.

あなたは以下のようにシェフのレシピからデータBAGEを読むことができますhttps://docs.chef.io/data_bags.html

+0

おかげで、これは正しい道に私を置き、私はおそらく間違った例を以下ました。唯一のことは、このコマンドを使用して、秘密の 'secret = Chef :: EncryptedDataBagItem.load_secret(Chef :: Config [:encrypted_data_bag_secret])'を取得する必要があることです。ファイルを取得します(パスを指定した場合も同様です)。 – Mikyjpeg

+0

とにかく、私はrubyブロックの中でそれを使い続けるべきです。なぜなら、シークレットファイルが存在しなければ(前のブロックにコピーしていれば)コンパイルが失敗するからです。とにかくルビーブロックは、データバッグの値を使って他の作業をしているので、それほど悪くはありません。 – Mikyjpeg

0

を参照してください。Chef::EncryptedDataBagItem.load('data_bag_name','data_bag_item_name')

関連する問題