class KingslyCertbot::Runner

Attributes

configuration[R]

Public Class Methods

new(args) click to toggle source
# File lib/kingsly_certbot/runner.rb, line 7
def initialize(args)
  raise 'Argument passed is not of type Array' if args.class != Array
  raise '--config argument missing' if args[0].nil? || args[0].strip == ''
  raise "Unknown argument '#{args[0]}'" if args[0] != '--config'
  raise "Config file does not exist at '#{args[1]}'" unless File.exist?(args[1])

  @config_path = args[1]
end

Public Instance Methods

configure() click to toggle source
# File lib/kingsly_certbot/runner.rb, line 16
def configure
  begin
    local_config = YAML.load_file(@config_path)
    $logger.info("Loaded config file from #{@config_path}")
  rescue Psych::SyntaxError => e
    raise StandardError, "Invalid YAML config file '#{@config_path}', original message: '#{e.message}'"
  end

  @configuration = KingslyCertbot::Configuration.new(local_config)
  $logger.info("Loaded configuration: #{@configuration}")
  Raven.configure do |config|
    config.dsn = @configuration.sentry_dsn
    config.encoding = 'json'
    config.environments = %w[production integration]
    config.current_environment = @configuration.environment
    config.logger = $logger
    config.release = KingslyCertbot::VERSION
  end
  self
end
execute() click to toggle source
# File lib/kingsly_certbot/runner.rb, line 37
def execute
  @configuration.validate!
  $logger.info("Querying Kingsly server for certificate to domain #{@configuration.sub_domain}.#{@configuration.top_level_domain}")
  cert_bundle = KingslyClient.get_cert_bundle(
    kingsly_server_host: @configuration.kingsly_server_host,
    kingsly_server_user: @configuration.kingsly_server_user,
    kingsly_server_password: @configuration.kingsly_server_password,
    top_level_domain: @configuration.top_level_domain,
    sub_domain: @configuration.sub_domain,
    kingsly_http_read_timeout: @configuration.kingsly_http_read_timeout,
    kingsly_http_open_timeout: @configuration.kingsly_http_open_timeout
  )
  $logger.info("Updating assets for server type #{@configuration.server_type}")
  adapter = case @configuration.server_type
            when 'ipsec'
              IpSecCertAdapter.new(cert_bundle, @configuration.ipsec_root)
            else
              raise "Unsupported server type #{@configuration.server_type}"
            end
  adapter.update_assets
  adapter.restart_service
  $logger.info("Updated assets for server type #{@configuration.server_type}")
rescue StandardError => e
  $logger.error('FAILED - Kingsly Certbot execution failed for following reason:')
  $logger.error(e.message)
  $logger.error e.backtrace.join("\n")
  Raven.capture_exception(e, 'Failed in KingslyCertbot::Runner.execute operation')
end