Sha256: 6038de775bc6c49483a4330364df35f200ab326e88ad18cda6c9006ee3c28426

Contents?: true

Size: 1.91 KB

Versions: 2

Compression:

Stored size: 1.91 KB

Contents

require 'erubis'

module Ridley
  module BootstrapBinding
    module ClassMethods
      def validate_options(options = {})
        if options[:server_url].nil?
          raise Errors::ArgumentError, "A server_url is required for bootstrapping"
        end

        if options[:validator_path].nil?
          raise Errors::ArgumentError, "A path to a validator is required for bootstrapping"
        end
      end

      # A hash of default options to be used in the Context initializer
      #
      # @return [Hash]
      def default_options
        @default_options ||= {
          validator_client: "chef-validator",
          attributes: Hash.new,
          run_list: Array.new,
          environment: "_default",
          sudo: true,
          hints: Hash.new
        }
      end
    end

    class << self
      def included(base)
        base.extend(ClassMethods)
      end
    end

    attr_reader :template_file
    attr_reader :bootstrap_proxy
    attr_reader :chef_version
    attr_reader :default_options
    attr_reader :validator_path
    attr_reader :encrypted_data_bag_secret
    attr_reader :server_url
    attr_reader :validator_client
    attr_reader :node_name
    attr_reader :attributes
    attr_reader :run_list
    attr_reader :environment

    # @return [Pathname]
    def templates_path
      Ridley.root.join('bootstrappers')
    end

    # @return [String]
    def first_boot
      JSON.fast_generate(attributes.merge(run_list: run_list))
    end

    # The validation key to create a new client for the node
    #
    # @raise [Ridley::Errors::ValidatorNotFound]
    #
    # @return [String]
    def validation_key
      IO.read(File.expand_path(validator_path)).chomp
    rescue Errno::ENOENT
      raise Errors::ValidatorNotFound, "Error bootstrapping: Validator not found at '#{validator_path}'"
    end

    # @return [Erubis::Eruby]
    def template
      Erubis::Eruby.new(IO.read(template_file).chomp)
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ridley-0.12.4 lib/ridley/mixin/bootstrap_binding.rb
ridley-0.12.3 lib/ridley/mixin/bootstrap_binding.rb