Hello, Stuck in databag values overriding.
case1: i have two data bags,*answer *and input. answer
databagcontains 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