### Summary

The `apt_repository` will fail with a somewhat confusing error if gnugp, and dirmngr manager are not installed.  Neither of these packages are Required/Essential/Important, and may not be already installed in minimal systems that you might want to run `apt_repository` on.

The fix might be to just include `gnupg` in the requirements section of the docs.

### Issue Type

Documentation Report

### Component Name

apt_repository

### Ansible Version

```console
$  ansible --version
ansible [core 2.11.4]
  config file = ...
  configured module search path = ...
  ansible python module location = ...
  ansible collection location = ...
  executable location = /usr/local/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]
  jinja version = 3.0.1
  libyaml = True
```


### Configuration

```console
$ ansible-config dump --only-changed
```


### OS / Environment

Mostly a docs issue so this is N/A. But apt_repository applies to Debian, Ubuntu, and forks.

### Additional Information

Tells people that need gnupg when using apt_repository.

### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
LP_API = 'https://launchpad.net/api/1.0/~%s/+archive/%s'
    def __init__(self, module):
        self.module = module
        self.codename = module.params['codename'] or distro.codename
        super(UbuntuSourcesList, self).__init__(module)
        self.apt_key_bin = self.module.get_bin_path('apt-key', required=False)
        self.gpg_bin = self.module.get_bin_path('gpg', required=False)
        if not self.apt_key_bin and not self.gpg_bin:
            self.module.fail_json(msg='Either apt-key or gpg binary is required, but neither could be found')
    def __deepcopy__(self, memo=None):
        return UbuntuSourcesList(self.module)
    def _get_ppa_info(self, owner_name, ppa_name):
        lp_api = self.LP_API % (owner_name, ppa_name)
        headers = dict(Accept='application/json')
        response, info = fetch_url(self.module, lp_api, headers=headers)
        if info['status'] != 200:
            self.module.fail_json(msg="failed to fetch PPA information, error was: %s" % info['msg'])
        return json.loads(to_native(response.read()))
    def _expand_ppa(self, path):
        ppa = path.split(':')[1]
        ppa_owner = ppa.split('/')[0]
        try:
            ppa_name = ppa.split('/')[1]
        except IndexError:
            ppa_name = 'ppa'
        line = 'deb http://ppa.launchpad.net/%s/%s/ubuntu %s main' % (ppa_owner, ppa_name, self.codename)
        return line, ppa_owner, ppa_name
    def _key_already_exists(self, key_fingerprint):