How to create a data bag from a recipe and avoid the exception when that data bag already exists?
The documentation shows that creating a data bag is done like this:
new_databag = Chef::DataBag.new
new_databag.name('unique_name')
new_databag.save
This works when the databag does not exist yet, but how to make it work if the databag already exists so it will not break the chef run?
Try using the list
method of Chef::DataBag and check whether your databag's name is present:
require 'chef/data_bag'
unless Chef::DataBag.list.key?('unique_name')
new_databag = Chef::DataBag.new
new_databag.name('unique_name')
new_databag.save
end
I use this to make my recipes more robust, or throw a more friendly error if an expected databag cannot be found on a Chef server.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With