### Summary

The apt module runs `aptitude` on the target host. When `fail_on_autoremove=yes`, the `--no-remove` switch is added to the command line. This switch is valid for `apt`, but not for `aptitude`, so the command fails.

### Issue Type

Bug Report

### Component Name

apt

### Ansible Version

```console
$ ansible --version
[DEPRECATION WARNING]: Ansible will require Python 3.8 or newer on the controller starting with Ansible 2.12. Current version:
3.7.3 (default, Jan 22 2021, 20:04:44) [GCC 8.3.0]. This feature will be removed from ansible-core in version 2.12. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
ansible [core 2.11.9]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.7/dist-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.7.3 (default, Jan 22 2021, 20:04:44) [GCC 8.3.0]
  jinja version = 3.0.3
  libyaml = True
```


### Configuration

```console
$ ansible-config dump --only-changed -t all
[DEPRECATION WARNING]: Ansible will require Python 3.8 or newer on the controller starting with Ansible 2.12. Current version:
3.7.3 (default, Jan 22 2021, 20:04:44) [GCC 8.3.0]. This feature will be removed from ansible-core in version 2.12. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
usage: ansible-config [-h] [--version] [-v] {list,dump,view} ...
ansible-config: error: unrecognized arguments: -t all

usage: ansible-config [-h] [--version] [-v] {list,dump,view} ...

View ansible configuration.

positional arguments:
  {list,dump,view}
    list            Print all config options
    dump            Dump configuration
    view            View configuration file

optional arguments:
  --version         show program's version number, config file location,
                    configured module search path, module location, executable
                    location and exit
  -h, --help        show this help message and exit
  -v, --verbose     verbose mode (-vvv for more, -vvvv to enable connection
                    debugging)
```


### OS / Environment

Debian 10, aptitude 0.8.11

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```
ansible 'all:!internal_windows:!ucs' -b -m apt -a "update_cache=yes upgrade=yes fail_on_autoremove=yes"
```


### Expected Results

Expected target servers' apt packages to be upgraded.

### Actual Results

```console
tallis | FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "msg": "'/usr/bin/aptitude safe-upgrade' failed: /usr/bin/aptitude: unrecognized option '--no-remove'\n",
    "rc": 1,
    "stdout": "aptitude 0.8.11\nUsage: aptitude [-S fname] [-u|-i]\n       aptitude [options] <action> ...\n\nActions (if none is specified, aptitude will enter interactive mode):\n\n install         Install/upgrade packages.\n remove          Remove packages.\n purge           Remove packages and their configuration files.\n hold            Place packages on hold.\n unhold          Cancel a hold command for a package.\n markauto        Mark packages as having been automatically installed.\n unmarkauto      Mark packages as having been manually installed.\n forbid-version  Forbid aptitude from upgrading to a specific package version.\n update
Download lists of new/upgradable packages.\n safe-upgrade    Perform a safe upgrade.\n full-upgrade    Perform an upgrade, possibly installing and removing packages.\n build-dep       Install the build-dependencies of packages.\n forget-new      Forget what packages are \"new\".\n search          Search for a package by name and/or expression.\n show            Display detailed info about a package.\n showsrc         Display detailed info about a source package (apt wrapper).\n versions        Displays the versions of specified packages.\n clean           Erase downloaded package files.\n autoclean       Erase old downloaded package files.\n changelog       View a package's changelog.\n download        Download the .deb file for a package (apt wrapper).\n source          Download source package (apt wrapper).\n reinstall       Reinstall a currently installed package.\n why             Explain why a particular package should be installed.\n why-not         Explain why a particular package cannot be installed.\n\n add-user-tag    Add user tag to packages/patterns.\n remove-user-tag Remove user tag from packages/patterns.\n\nOptions:\n -h              This help text.\n --no-gui        Do not use the GTK GUI even if available.\n -s              Simulate actions, but do not actually perform them.\n -d              Only download packages, do not install or remove anything.\n -P              Always prompt for confirmation of actions.\n -y              Assume that the answer to simple yes/no questions is 'yes'.\n -F format       Specify a format for displaying search results; see the manual.\n -O order        Specify how search results should be sorted; see the manual.\n -w width        Specify the display width for formatting search results.\n -f              Aggressively try to fix broken packages.\n -V              Show which versions of packages are to be installed.\n -D              Show the dependencies of automatically changed packages.\n -Z              Show the change in installed size of each package.\n -v              Display extra information. (may be supplied multiple times).\n -t [release]    Set the release from which packages should be installed.\n -q              In command-line mode, suppress the incremental progress\n                  indicators.\n -o key=val      Directly set the configuration option named 'key'.\n --with(out)-recommends     Specify whether or not to treat recommends as\n                            strong dependencies.\n -S fname        Read the aptitude extended status info from fname.\n -u              Download new package lists on startup.\n                  (terminal interface only)\n -i              Perform an install run on startup.\n                  (terminal interface only)\n\nSee the manual page for a complete list and description of all the options.\n\nThis aptitude does not have Super Cow Powers.\n",
    "stdout_lines": [
        "aptitude 0.8.11",
        "Usage: aptitude [-S fname] [-u|-i]",
        "       aptitude [options] <action> ...",
        "",
        "Actions (if none is specified, aptitude will enter interactive mode):",
        "",
        " install         Install/upgrade packages.",
        " remove          Remove packages.",
        " purge           Remove packages and their configuration files.",
        " hold            Place packages on hold.",
        " unhold          Cancel a hold command for a package.",
        " markauto        Mark packages as having been automatically installed.",
        " unmarkauto      Mark packages as having been manually installed.",
        " forbid-version  Forbid aptitude from upgrading to a specific package version.",
        " update          Download lists of new/upgradable packages.",
        " safe-upgrade    Perform a safe upgrade.",
        " full-upgrade    Perform an upgrade, possibly installing and removing packages.",
        " build-dep       Install the build-dependencies of packages.",
        " forget-new      Forget what packages are \"new\".",
        " search          Search for a package by name and/or expression.",
        " show            Display detailed info about a package.",
        " showsrc         Display detailed info about a source package (apt wrapper).",
        " versions        Displays the versions of specified packages.",
        " clean           Erase downloaded package files.",
        " autoclean       Erase old downloaded package files.",
        " changelog       View a package's changelog.",
        " download        Download the .deb file for a package (apt wrapper).",
        " source          Download source package (apt wrapper).",
        " reinstall       Reinstall a currently installed package.",
        " why             Explain why a particular package should be installed.",
        " why-not         Explain why a particular package cannot be installed.",
        "",
        " add-user-tag    Add user tag to packages/patterns.",
        " remove-user-tag Remove user tag from packages/patterns.",
        "",
        "Options:",
        " -h              This help text.",
        " --no-gui        Do not use the GTK GUI even if available.",
        " -s              Simulate actions, but do not actually perform them.",
        " -d              Only download packages, do not install or remove anything.",
        " -P              Always prompt for confirmation of actions.",
        " -y              Assume that the answer to simple yes/no questions is 'yes'.",
        " -F format       Specify a format for displaying search results; see the manual.",
        " -O order        Specify how search results should be sorted; see the manual.",
        " -w width        Specify the display width for formatting search results.",
        " -f              Aggressively try to fix broken packages.",
        " -V              Show which versions of packages are to be installed.",
        " -D              Show the dependencies of automatically changed packages.",
        " -Z              Show the change in installed size of each package.",
        " -v              Display extra information. (may be supplied multiple times).",
        " -t [release]    Set the release from which packages should be installed.",
        " -q              In command-line mode, suppress the incremental progress",
        "                  indicators.",
        " -o key=val      Directly set the configuration option named 'key'.",
        " --with(out)-recommends     Specify whether or not to treat recommends as",
        "                            strong dependencies.",
        " -S fname        Read the aptitude extended status info from fname.",
        " -u              Download new package lists on startup.",
        "                  (terminal interface only)",
        " -i              Perform an install run on startup.",
        "                  (terminal interface only)",
        "",
        "See the manual page for a complete list and description of all the options.",
        "",
        "This aptitude does not have Super Cow Powers."
    ]
}
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
description:
      - Corresponds to the C(--no-install-recommends) option for I(apt). V(true) installs recommended packages.  V(false) does not install
        recommended packages. By default, Ansible will use the same defaults as the operating system. Suggested packages are never installed.
    aliases: [ install-recommends ]
    type: bool
  force:
    description:
      - 'Corresponds to the C(--force-yes) to I(apt-get) and implies O(allow_unauthenticated=yes) and O(allow_downgrade=yes)'
      - "This option will disable checking both the packages' signatures and the certificates of the
        web servers they are downloaded from."
      - 'This option *is not* the equivalent of passing the C(-f) flag to I(apt-get) on the command line'
      - '**This is a destructive operation with the potential to destroy your system, and it should almost never be used.**
         Please also see C(man apt-get) for more informati'
    type: bool
    default: 'no'
  clean:
    description:
      - Run the equivalent of C(apt-get clean) to clear out the local repository of retrieved package files. It removes everything but
        the lock file from /var/cache/apt/archives/ and /var/cache/apt/archives/partial/.
      - Can be run as part of the package installation (clean runs before install) or as a separate step.
    type: bool
    default: 'no'
    version_added: "2.13"
  allow_unauthenticated:
    description:
      - Ignore if packages cannot be authenticated. This is useful for bootstrapping environments that manage their own apt-key setup.
      - 'O(allow_unauthenticated) is only supported with O(state): V(install)/V(present)'
    aliases: [ allow-unauthenticated ]
    type: bool
    default: 'no'