def execute!(subcommand, *arguments, &block)
      execute(subcommand, *arguments, &block).tap do |result|
        unless result.success?
          command = command(subcommand, *arguments)
          exception = CommandFailed.new command, result
          logger.warn "Command #{command} failed: #{exception.message}"
          raise exception
        end
      end
    end
def execute!(subcommand, *arguments, &block)
      execute(subcommand, *arguments, &block).tap do |result|
        unless result.success?
          command = command(subcommand, *arguments)
          exception = CommandFailed.new command, result
          logger.warn "Command #{command} failed: #{exception.message}"
          raise exception
        end
      end
    end
Executes a Vagrant subcommand, raising an exception on failure

   * subcommand: Vagrant subcommand to run (:up, :status, etc.)
   * arguments:  Arguments to pass to the subcommand (optional)
   * block:      Passed through to Derelict::Executer.execute

 Raises +Derelict::Instance::CommandFailed+ if the command fails.