### Summary

Since dnf is not installing the packages when running `dnf download --downloadonly...`, it does not require root access to pull down the rpms. It would be nice if ansible followed the same pattern.

### Issue Type

Feature Idea

### Component Name

dnf

### Additional Information

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
    - name: Download RPM's
      dnf:
        name: "{{ item }}"
        state: present
        download_only: yes
        download_dir: "{{ rpms_path }}"
      loop: "{{ rpms }}"
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
self.base._get_key_for_package(package)
                            except dnf.exceptions.Error as e:
                                fail = True
                        else:  
                            fail = True
                        if fail:
                            msg = 'Failed to validate GPG signature for {0}'.format(package)
                            self.module.fail_json(msg)
                if self.download_only:
                    
                    
                    self.module.exit_json(**response)
                else:
                    tid = self.base.do_transaction()
                    if tid is not None:
                        transaction = self.base.history.old([tid])[0]
                        if transaction.return_code:
                            failure_response['failures'].append(transaction.output())
                if failure_response['failures']:
                    failure_response['msg'] = 'Failed to install some of the specified packages'
                    self.module.fail_json(**failure_response)
                self.module.exit_json(**response)
        except dnf.exceptions.DepsolveError as e:
            failure_response['msg'] = "Depsolve Error occurred: {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)