module Chef::DSL::Recipe

Public Instance Methods

get_private_key(name) click to toggle source
# File lib/cheffish/recipe_dsl.rb, line 91
def get_private_key(name)
  Cheffish.get_private_key(name, run_context.config)
end
with_chef_data_bag(name) click to toggle source
# File lib/cheffish/recipe_dsl.rb, line 32
def with_chef_data_bag(name)
  run_context.cheffish.with_data_bag(name, &block)
end
with_chef_data_bag_item_encryption(encryption_options, &block) click to toggle source
# File lib/cheffish/recipe_dsl.rb, line 40
def with_chef_data_bag_item_encryption(encryption_options, &block)
  run_context.cheffish.with_data_bag_item_encryption(encryption_options, &block)
end
with_chef_environment(name, &block) click to toggle source
# File lib/cheffish/recipe_dsl.rb, line 36
def with_chef_environment(name, &block)
  run_context.cheffish.with_environment(name, &block)
end
with_chef_local_server(options, &block) click to toggle source
# File lib/cheffish/recipe_dsl.rb, line 48
def with_chef_local_server(options, &block)
  options[:host] ||= "127.0.0.1"
  options[:log_level] ||= Chef::Log.level
  options[:port] ||= ChefZero::VERSION.to_f >= 2.2 ? 8901.upto(9900) : 8901

  # Create the data store chef-zero will use
  options[:data_store] ||= begin
    unless options[:chef_repo_path]
      raise "chef_repo_path must be specified to with_chef_local_server"
    end

    # Ensure all paths are given
    %w{acl client cookbook container data_bag environment group node role}.each do |type|
      # Set the options as symbol keys and then copy to string keys
      string_key = "#{type}_path"
      symbol_key = "#{type}_path".to_sym

      options[symbol_key] ||= if options[:chef_repo_path].is_a?(String)
                                Chef::Util::PathHelper.join(options[:chef_repo_path], "#{type}s")
                              else
                                options[:chef_repo_path].map { |path| Chef::Util::PathHelper.join(path, "#{type}s") }
                              end

      # Copy over to string keys for things that use string keys (ChefFS)...
      # TODO: Fix ChefFS to take symbols or use something that is insensitive to the difference
      options[string_key] = options[symbol_key]
    end

    chef_fs = Chef::ChefFS::Config.new(options).local_fs
    chef_fs.write_pretty_json = true
    Chef::ChefFS::ChefFSDataStore.new(chef_fs)
  end

  # Start the chef-zero server
  Chef::Log.info("Starting chef-zero on port #{options[:port]} with repository at #{options[:data_store].chef_fs.fs_description}")
  chef_zero_server = ChefZero::Server.new(options)
  chef_zero_server.start_background

  run_context.cheffish.local_servers << chef_zero_server

  with_chef_server(chef_zero_server.url, &block)
end
with_chef_server(server_url, options = {}, &block) click to toggle source
# File lib/cheffish/recipe_dsl.rb, line 44
def with_chef_server(server_url, options = {}, &block)
  run_context.cheffish.with_chef_server({ chef_server_url: server_url, options: options }, &block)
end