module Chef::DSL::ChefVault
Public Instance Methods
Helper method that allows for listing the ids of a vault in a recipe. This method is needed because data_bag() returns the keys along with the items, so this method strips out the keys for users so that they don't have to do it in their recipes. @example
ids = chef_vault('secrets') log 'Yeah buddy!' if ids[0] == 'bacon'
@param [String] bag Name of the data bag to load from. @return [Array]
# File lib/chef/dsl/chef_vault.rb, line 58 def chef_vault(bag) raise "'#{bag}' is not a vault" unless Chef::DataBag.list.include? bag pattern = Regexp.new(/_keys$/).freeze data_bag(bag).each_with_object([]) do |id, acc| acc << id unless pattern.match?(id) end end
Helper method which provides a Recipe/Resource DSL
for wrapping creation of {ChefVault::Item}. @note Falls back to normal data bag item loading if the item is not actually a Chef
Vault item. This is controlled via +node['databag_fallback']+. @example
item = chef_vault_item('secrets', 'bacon') log 'Yeah buddy!' if item['_default']['type']
@param [String] bag Name of the data bag to load from. @param [String] id Identifier of the data bag item to load.
# File lib/chef/dsl/chef_vault.rb, line 39 def chef_vault_item(bag, id) if ::ChefVault::Item.vault?(bag, id) ::ChefVault::Item.load(bag, id) elsif node["chef-vault"]["databag_fallback"] data_bag_item(bag, id) else raise "Trying to load a regular data bag item #{id} from #{bag}, and databag_fallback is disabled" end end
Helper method which provides an environment wrapper for a data bag. This allows for easy access to current environment secrets inside of an item. @example
item = chef_vault_item_for_environment('secrets', 'bacon') log 'Yeah buddy!' if item['type'] == 'applewood_smoked'
@param [String] bag Name of the data bag to load from. @param [String] id Identifier of the data bag item to load. @return [Hash]
# File lib/chef/dsl/chef_vault.rb, line 76 def chef_vault_item_for_environment(bag, id) item = chef_vault_item(bag, id) return {} unless item[node.chef_environment] item[node.chef_environment] end