<!--- Verify first that your feature was not already discussed on GitHub -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Describe the new feature/improvement briefly below -->
dnf has a nobest [option](https://dnf.readthedocs.io/en/latest/command_ref.html#options-label) which does the following:

> --nobest
>     Set best option to False, so that transactions are not limited to best candidates only.

##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
dnf

##### ADDITIONAL INFORMATION
<!--- Describe how the feature would be used, why it is needed and what it would solve -->
Docker cannot be installed on CentOS8 without `--nobest` option and later on every time you want to do dnf upgrade you should pass `--nobest` option again, so that it does not complain about `docker-ce` package.
msg="Failed to download packages: {0}".format(to_text(e)),
                        results=[],
                    )
                if self.download_only:
                    for package in self.base.transaction.install_set:
                        response['results'].append("Downloaded: {0}".format(package))
                    self.module.exit_json(**response)
                else:
                    self.base.do_transaction()
                    for package in self.base.transaction.install_set:
                        response['results'].append("Installed: {0}".format(package))
                    for package in self.base.transaction.remove_set:
                        response['results'].append("Removed: {0}".format(package))
                if failure_response['failures']:
                    failure_response['msg'] = 'Failed to install some of the specified packages'
                    self.module.exit_json(**response)
                self.module.exit_json(**response)
        except dnf.exceptions.DepsolveError as e:
            failure_response['msg'] = "Depsolve Error occured: {0}".format(to_native(e))
            self.module.fail_json(**failure_response)
        except dnf.exceptions.Error as e:
            if to_text("already installed") in to_text(e):
                response['changed'] = False
                response['results'].append("Package already installed: {0}".format(to_native(e)))
                self.module.exit_json(**response)
            else:
                failure_response['msg'] = "Unknown Error occured: {0}".format(to_native(e))
                self.module.fail_json(**failure_response)
    @staticmethod
    def has_dnf():