##### SUMMARY
Cannot set hostname on 2.9.6

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
[hostname](https://docs.ansible.com/ansible/latest/modules/hostname_module.html)

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```
$ ansible --version
ansible 2.9.6
  config file = /home/porn/test/ansible/ansible.cfg
  configured module search path = ['/home/porn/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/porn/.local/lib/python3.6/site-packages/ansible
  executable location = /home/porn/.local/bin/ansible
  python version = 3.6.9 (default, Nov  7 2019, 10:44:02) [GCC 8.3.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```
$ ansible-config dump --only-changed
ANSIBLE_PIPELINING(/home/porn/test/ansible/ansible.cfg) = True
ANSIBLE_SSH_CONTROL_PATH(/home/porn/test/ansible/ansible.cfg) = /tmp/%%h-%%p-%%r
DEFAULT_CALLBACK_WHITELIST(/home/porn/test/ansible/ansible.cfg) = ['profile_tasks']
DEFAULT_GATHERING(/home/porn/test/ansible/ansible.cfg) = smart
DEFAULT_HOST_LIST(/home/porn/test/ansible/ansible.cfg) = ['/home/porn/test/ansible/hosts']
DEFAULT_REMOTE_PORT(/home/porn/test/ansible/ansible.cfg) = 29010
DEFAULT_REMOTE_USER(/home/porn/test/ansible/ansible.cfg) = ubuntu
HOST_KEY_CHECKING(/home/porn/test/ansible/ansible.cfg) = False
INTERPRETER_PYTHON(/home/porn/test/ansible/ansible.cfg) = /usr/bin/python3
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
```
$ uname -a
Linux pornmachine 4.15.0-91-generic #92-Ubuntu SMP Fri Feb 28 11:09:48 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:        18.04
Codename:       bionic
```

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->
try to set hostname on another ubuntu 18.04

<!--- Paste example playbooks or commands between quotes below -->
```yaml
- name: Base setup
  hosts: workers
  tasks:
    - hostname:
        name: "worker"
        use: debian
      become: yes
```

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
The hostname should be set

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
The command fails

<!--- Paste verbatim command output between quotes -->
```
TASK [hostname] *****************************************************************************************************************************************************************************
task path: /home/porn/test/ansible/worker.yml:5
Friday 03 April 2020  20:27:27 +0200 (0:00:01.969)       0:00:02.022 ********** 
Using module file /home/porn/.local/lib/python3.6/site-packages/ansible/modules/system/hostname.py
Pipelining is enabled.
<35.183.134.118> ESTABLISH SSH CONNECTION FOR USER: ubuntu
<35.183.134.118> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=29010 -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o ControlPath=/tmp/%h-%p-%r 35.183.134.118 '/bin/sh -c '"'"'sudo -H -S -n  -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-qzpktirbekasjjznnyfijducgvmqtgzq ; /usr/bin/python3'"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
<35.183.134.118> (1, b'\n{"msg": "Command failed rc=1, out=, err=Unknown operation worker\\n", "failed": true, "invocation": {"module_args": {"name": "worker", "use": "debian"}}}\n', b'OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017\r\ndebug1: Reading configuration data /home/porn/.ssh/config\r\ndebug1: /home/porn/.ssh/config line 15: Applying options for 35.*\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 19: Applying options for *\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 11218\r\ndebug3: mux_client_request_session: session request sent\r\ndebug1: mux_client_request_session: master session id: 2\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 1\r\n')
<35.183.134.118> Failed to connect to the host via ssh: OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/porn/.ssh/config
debug1: /home/porn/.ssh/config line 15: Applying options for 35.*
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: auto-mux: Trying existing master
debug2: fd 3 setting O_NONBLOCK
debug2: mux_client_hello_exchange: master version 4
debug3: mux_client_forwards: request forwardings: 0 local, 0 remote
debug3: mux_client_request_session: entering
debug3: mux_client_request_alive: entering
debug3: mux_client_request_alive: done pid = 11218
debug3: mux_client_request_session: session request sent
debug1: mux_client_request_session: master session id: 2
debug3: mux_client_read_packet: read header failed: Broken pipe
debug2: Received exit status from master 1
fatal: [35.183.134.118]: FAILED! => {
    "changed": false,
    "invocation": {
        "module_args": {
            "name": "worker",
            "use": "debian"
        }
    },
    "msg": "Command failed rc=1, out=, err=Unknown operation worker\n"
}
```

The only workaround is ansible downgrade to 2.9.5 :(
"""
    This is a macOS hostname manipulation strategy class. It uses
    /usr/sbin/scutil to set ComputerName, HostName, and LocalHostName.
    HostName corresponds to what most platforms consider to be hostname.
    It controls the name used on the command line and SSH.
    However, macOS also has LocalHostName and ComputerName settings.
    LocalHostName controls the Bonjour/ZeroConf name, used by services
    like AirDrop. This class implements a method, _scrub_hostname(), that mimics
    the transformations macOS makes on hostnames when enterened in the Sharing
    preference pane. It replaces spaces with dashes and removes all special
    characters.
    ComputerName is the name used for user-facing GUI services, like the
    System Preferences/Sharing pane and when users connect to the Mac over the network.
    """
    def __init__(self, module):