# Encrypted Databag values override

**URL:** <https://discourse.chef.io/t/encrypted-databag-values-override/5054>\
**Category:** Chef Infra (archive)\
**Created:** [February 20, 2014, 10:13am UTC](https://discourse.chef.io/t/encrypted-databag-values-override/5054 "2014-02-20T10:13:50Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mayank\_verma](https://avatars.discourse-cdn.com/v4/letter/m/b4bc9f/32.png) [@mayank\_verma](https://discourse.chef.io/u/mayank_verma)\
**Post date:** [February 20, 2014, 10:13am UTC](https://discourse.chef.io/t/encrypted-databag-values-override/5054/1 "2014-02-20T10:13:50Z")

</div>

Hello, Stuck in databag values overriding.

_case1:_ i have two data bags,\*answer \*and _input_. _answer  
databag_contains default deployment configuration & input databag is  
containing  
user input. if input databag contains any key available in answer data bag  
overwrite the value of answer databag with input databag value.

i used deep merge concept to overwrite the data bag values that is working  
fine.  
Compiling Cookbooks…

_Code:_  
ans\_config = data\_bag\_item(“dbschema”,“oride”)  
override\_config = data\_bag\_item(“dbschema”,“merge”)  
puts "====INPUT===="  
puts override\_config[“database”]  
puts "=====ANSWER======"  
puts ans\_config[“database”]  
Chef::Mixin::DeepMerge.deep\_merge! override\_config[“database”],  
ans\_config[“database”]  
puts ans\_config[“database”][“name”]  
puts ans\_config[“database”][“user”]

_OutPut:_

_------Compiling  
Cookbooks…====INPUT===={“name”=\>“xyz”}=====ANSWER======{“user”=\>“123”,  
“name”=\>“789”}_  
_xyz123_

_case2:_ same use case like case1, only difference is my\* answer data bag  
is encrypted.\* Values of data bag is not overridden in encrypted data bag  
case.  
_Code:_  
secret = Chef::EncryptedDataBagItem.load\_secret("/home/pqrs/sample\_key")  
ans\_config = Chef::EncryptedDataBagItem.load(“dbschema”, “oride”, secret)  
override\_config = data\_bag\_item(“dbschema”,“merge”)  
puts "====INPUT===="  
puts override\_config[“database”]  
puts "=====ANSWER======"  
puts ans\_config[“database”]  
Chef::Mixin::DeepMerge.deep\_merge! override\_config[“database”],  
ans\_config[“database”]  
puts ans\_config[“database”][“name”]  
puts ans\_config[“database”][“user”]

_OutPut:_

_Compiling  
Cookbooks…====INPUT===={“name”=\>“xyz”}=====ANSWER======{“user”=\>“123”,  
“name”=\>“789”}_  
_789123_

_Expected OutPut for case2:_

_Compiling  
Cookbooks…====INPUT===={“name”=\>“xyz”}=====ANSWER======{“user”=\>“123”,  
“name”=\>“789”}_  
_xyz123_

_My Questions:_

- why deep merge is not working in case of encrypted data bag if it is  
working in case of plain data bag.Even though in deep merge i am passing  
variables that holds hash values in both the cases.
- Any other alternate way to override databag values

Thanks in advance guys!

–  
Thanks  
Mayank
