### Summary

`ansible --version` puts a trailing space at the end of its first output line. The trailing space was introduced in #72287

This breaks ansible version detection in Vagrant. Though it would be possible to fix the version detection in Vagrant by trimming whitespace before comparing strings, I assume the addition of the trailing space was an accident since the PR doesn't indicate any intent to do so.

Since I already identified the lines which introduced this bug, I'll be happy to create a PR to remove the trailing space as well. Just waiting for your confirmation that this is indeed a bug to fix and not intended behavior.

### Issue Type

Bug Report

### Component Name

ansible --version

### Ansible Version

```console
$ ansible --version
ansible [core 2.11.1] 
  config file = /home/fs-dev/Development/VagrantVMs/ansible.cfg
  configured module search path = ['/home/fs-dev/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/fs-dev/.local/lib/python3.8/site-packages/ansible
  ansible collection location = /home/fs-dev/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/fs-dev/.local/bin/ansible
  python version = 3.8.5 (default, May 27 2021, 13:30:53) [GCC 9.3.0]
  jinja version = 2.10.1
  libyaml = True
```


### Configuration

```console
$ ansible-config dump --only-changed
CALLBACKS_ENABLED(/home/fs-dev/Development/VagrantVMs/ansible.cfg) = ['profile_roles', 'profile_tasks', 'timer']
```


### OS / Environment

Ubuntu 20.04.2 LTS

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
ansible --version
```
First line of output ends on trailing space

### Expected Results

`ansible --version` should output its version without trailing space:  
`ansible [core 2.11.1]`

### Actual Results

```console
ansible [core 2.11.1] 
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
"""Add options for verbosity"""
    parser.add_argument('-v', '--verbose', dest='verbosity', default=C.DEFAULT_VERBOSITY, action="count",
                        help="verbose mode (-vvv for more, -vvvv to enable connection debugging)")
def add_async_options(parser):
    """Add options for commands which can launch async tasks"""
    parser.add_argument('-P', '--poll', default=C.DEFAULT_POLL_INTERVAL, type=int, dest='poll_interval',
                        help="set the poll interval if using -B (default=%s)" % C.DEFAULT_POLL_INTERVAL)
    parser.add_argument('-B', '--background', dest='seconds', type=int, default=0,
                        help='run asynchronously, failing after X seconds (default=N/A)')
def add_basedir_options(parser):
    """Add options for commands which can set a playbook basedir"""
    parser.add_argument('--playbook-dir', default=C.config.get_config_value('PLAYBOOK_DIR'), dest='basedir', action='store',
                        help="Since this tool does not use playbooks, use this as a substitute playbook directory."
                             "This sets the relative path for many features including roles/ group_vars/ etc.",
                        type=unfrack_path())
def add_check_options(parser):
    """Add options for commands which can run with diagnostic information of tasks"""
    parser.add_argument("-C", "--check", default=False, dest='check', action='store_true',
                        help="don't make any changes; instead, try to predict some of the changes that may occur")
    parser.add_argument('--syntax-check', dest='syntax', action='store_true',
                        help="perform a syntax check on the playbook, but do not execute it")
    parser.add_argument("-D", "--diff", default=C.DIFF_ALWAYS, dest='diff', action='store_true',
                        help="when changing (small) files and templates, show the differences in those"
                             " files; works great with --check")
def add_connect_options(parser):